JP2015188215A - リトライバッファ及びリトライバッファを用いてリトライ動作を実行する方法 - Google Patents

リトライバッファ及びリトライバッファを用いてリトライ動作を実行する方法 Download PDF

Info

Publication number
JP2015188215A
JP2015188215A JP2015049283A JP2015049283A JP2015188215A JP 2015188215 A JP2015188215 A JP 2015188215A JP 2015049283 A JP2015049283 A JP 2015049283A JP 2015049283 A JP2015049283 A JP 2015049283A JP 2015188215 A JP2015188215 A JP 2015188215A
Authority
JP
Japan
Prior art keywords
packet
retry
agent
pointer
retry buffer
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.)
Granted
Application number
JP2015049283A
Other languages
English (en)
Other versions
JP6584797B2 (ja
Inventor
グレン・ウッド
Glenn Wood
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.)
Keysight Technologies Inc
Original Assignee
Keysight Technologies Inc
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 Keysight Technologies Inc filed Critical Keysight Technologies Inc
Publication of JP2015188215A publication Critical patent/JP2015188215A/ja
Application granted granted Critical
Publication of JP6584797B2 publication Critical patent/JP6584797B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/08Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1809Selective-repeat protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1812Hybrid protocols; Hybrid automatic repeat request [HARQ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1874Buffer management

Abstract

【課題】リトライ動作に対応するために、着信パケットストリームを一時停止するか、着信パケットストリームのパケットのうちの幾つかを廃棄する方法を提供する。【解決手段】送信エージェント110がパケットストリームをリトライバッファ200に順次書き込み、リトライバッファに書き込まれたパケットを受信エージェント130に順次送信しつつ、追加のパケットをリトライバッファに順次書き込み続け、受信エージェントから肯定応答を受信しつつ、リトライバッファに書き込まれたパケットを受信エージェントに順次送信し続ける。送信パケットの受信不成功時には、受信エージェントからリトライ要求を受信し、リトライ要求が得られた送信パケットから開始して、リトライバッファから受信エージェントにパケットを再送するとともに、送信エージェントから受信された追加のパケットをリトライバッファに順次書き込み続ける。【選択図】図1

Description

一般に、従来の高速シリアルデータ伝送プロトコルは、或る形態の「リトライ」動作をサポートしている。このリトライ動作に従って、送信エージェント(例えば、ホストデバイス)によって送信され、受信エージェント(例えば、メモリデバイス)によって誤って又は失敗して受信されたパケット(例えば、データパケット)を、要求に応じて再送することができる。パケットの受信失敗は、例えば、高いビットエラーレートに基づいて判断することができる。リトライ動作は、受信エージェントが、送信エージェントからのパケットをバスの順方向リンク上で受信することに失敗し、その後、再送の必要があるパケットを識別する情報を、通常は戻りリンク上で送信エージェントに送信することを伴う。リトライ動作を可能にするために、パケットの受信に成功した(すなわち、それゆえにリトライ動作を必要としない)ことが受信エージェントによって確認されるまで、送信パケットを一時的に記憶するリトライバッファが設けられる。ここで、バッファリングされた送信パケットは、必要に応じて、無視されて上書きされる場合がある。受信に成功せず、受信エージェントがパケットの受信に成功したことを確認しないときは、リトライ動作が開始され、その結果、既知の送信成功の最後の時点からのバッファリングされたパケットが再送される。
ハイブリッドメモリキューブ(HMC)プロトコル等の幾つかの伝送プロトコルは、ポインタ交換動作を用いて、再送の必要があるパケットを識別する情報を通信する。例えば、HMCプロトコルは、128ビットフローユニットからなるパケットを提供する。これらのパケットのそれぞれは、「FLIT」(「フローユニット(FLow unIT」)と呼ばれる。各パケットを用いて、リトライバッファ内のそのパケットの位置を表すリトライポインタが送信される。リトライポインタは、各パケットを用いて順方向リンク上を順方向に進む順方向リトライポインタ(FRP)と、逆方向リンク上(例えば、順方向リンクの反対側)を逆方向に進む同じリトライポインタである逆方向リトライポインタ(RRP)とを含むことができ、それによって、ラウンドトリップが完成する。リトライバッファは、FLITアドレスを用いてアドレス指定され、リトライポインタは、リトライバッファにおける対応するパケット位置を表す。例えば、送信エージェントによって送信される各パケットは、そのパケットがリトライバッファ内に記憶されているアドレスを示す8ビットFRPフィールドを含む。同様に、受信エージェントから送信エージェントに返される各パケットは、最後に受信に成功したFRPの値を示す8ビットRRPフィールドを含む。したがって、送信エージェントは、返されたパケット上のRRPフィールドを調べることによって、受信エージェントがどのパケットの受信に成功したのかを知ることができる。RRPは、逆方向リンク上を戻り、ラウンドトリップを完成させる同じリトライポインタである。HMCプロトコルのより詳細な内容は、例えば、ハイブリッドメモリキューブコンソーシアム(Hybrid Memory Cube Consortium)の「Hybrid Memory Cube」(2012)に記載されている。この文献の全内容は、引用することによって本明細書の一部をなすものとする。
しかしながら、ポインタ交換に基づくプロトコルを用いることの限界は、リトライバッファ内の許容可能な空間が、リトライポインタがアドレス指定するためにサイズ決めされた空間によって制限されるということである。したがって、そのような制限を回避するためにリトライバッファの空間を拡張する必要がある。さらに、着信パケットがリアルタイムでストリーミングされる場合、それらのパケットのバッファリングは、リトライ動作(既に送信されたパケットの再送)の実行を試みている間であっても続けなければならない。これらの状況の下、従来のシステムは、一般に、リトライ動作に対応するために、着信(リアルタイム)パケットストリームを一時停止するか、又は着信パケットストリームのパケットのうちの幾つかを廃棄することを必要とする。
2つの個別のメモリを有する2つのバッファを実装することによって、これらの問題に対処することができる。ここで、一方のバッファは、リトライバッファとして動作し、他方のバッファ(リトライバッファの上流に位置する)は、単なる先入れ先出し(FIFO)バッファである。しかしながら、各チップメモリは、付随したオーバヘッド(例えば、BIST回路部)を有し、そのため、このアーキテクチャは、実際には、2倍のオーバヘッド及び2倍のチップ面積を有する。
代表的な実施形態では、パケットストリームのパケットをリアルタイムで送信する方法が提供される。この方法は、パケットを送信エージェントのリトライバッファに順次書き込むステップであって、前記リトライバッファは、複数のコンテキストを含む、書き込むステップと、前記リトライバッファに書き込まれた前記パケットを受信エージェントに順次送信するとともに、追加のパケットを前記リトライバッファに順次書き込み続けるステップと、前記受信エージェントが前記送信パケットの受信に成功したとき、前記受信エージェントから肯定応答を受信するとともに、前記リトライバッファに書き込まれた前記パケットを前記受信エージェントに順次送信し続けるステップと、前記受信エージェントが前記送信パケットの受信に成功しなかったとき、前記受信エージェントからリトライ要求を受信するステップと、前記受信エージェントが受信に成功せず、その結果、前記リトライ要求が得られた前記送信パケットから開始して、前記リトライバッファから前記受信エージェントに前記パケットを再送するとともに、送信エージェントから受信される前記追加のパケットを前記リトライバッファに順次書き込み続けるステップと、を含む。
別の代表的な実施形態では、パケットを受信エージェントに送信する方法が提供される。この方法は、パケットストリームのパケットをリトライバッファにリアルタイムで順次書き込むとともに、前記リトライバッファにおいて書き込みポインタを前進させることによって前記パケットの前記書き込みを追跡するステップと、前記リトライバッファに書き込まれた前記パケットを前記受信エージェントに順次送信するとともに、再生ポインタを前進させることによって前記パケットの前記送信を追跡するステップと、前記受信エージェントによる前記送信パケットの受信成功に肯定応答する情報を受信するとともに、読み出しポインタを前進させることによって前記受信成功を追跡するステップと、前記送信パケットが前記受信エージェントによる受信に成功しなかったとき、リトライ要求を受信するステップと、前記リトライ要求に応答して、前記再生ポインタを前記読み出しポインタの現在のロケーションに再配置するステップと、前記リトライ要求に応答して、前記再配置された再生ポインタから開始して、前記リトライバッファに書き込まれたパケットを前記受信エージェントに順次再送することによってリトライ動作を開始するとともに、前記再生ポインタを前進させることによって前記パケットの前記再送を追跡するステップと、を含む。前記パケットストリームの前記パケットは、前記リトライ動作中、前記リトライバッファにリアルタイムで書き込まれ続けるとともに、前記書き込みポインタによって追跡され続ける。
別の代表的な実施形態では、バスを介してパケットを受信エージェントに送信するための送信エージェントが設けられる。該送信エージェントは、トランザクションレイヤ及びリトライバッファを備える。前記トランザクションレイヤは、前記受信エージェントに送信されるパケットを発行するように構成されている。前記リトライバッファは、該送信エージェントの前記トランザクションレイヤからの前記パケットをリアルタイムで順次受信して記憶することと、前記バスの順方向リンクを介して、前記記憶されたパケットを前記受信エージェントに順次送信することであって、まだ送信されていない前記記憶されたパケットは、バッファリングされたパケットである、送信することと、前記受信エージェントが前記送信パケットの受信に成功したときに、前記受信エージェントから肯定応答を受信することであって、前記肯定応答がまだ受信されていない前記送信パケットは、ペンディング中のパケットである、受信することと、前記受信エージェントによる受信に成功していない前記送信パケットから開始して、前記ペンディング中のパケットを前記受信エージェントに順次再送することと、該送信エージェントの前記トランザクションレイヤからの前記パケットをリアルタイムで順次受信して記憶し続けるとともに、前記ペンディング中のパケットを順次再送することとを行うように構成されている。
代表的な実施形態は、以下の詳細な説明を添付図面の図とともに読むと、その説明から最も良く理解される。適用可能な箇所ではなるべく、同様の参照符号が同様の要素を指している。
代表的な実施形態によるデータ通信システムの簡略ブロック図である。 代表的な実施形態によるデータ通信システムのリトライバッファ及びリトライ動作の実行前の例示のポインタの簡略ブロック図である。 代表的な実施形態によるデータ通信システムのリトライバッファ及びリトライ動作の実行前の例示のポインタの簡略ブロック図である。 代表的な実施形態によるデータ通信システムのリトライバッファ及びリトライ動作の開始時の例示のポインタの簡略ブロック図である。 代表的な実施形態によるデータ通信システムのリトライバッファ及びリトライ動作の最中の例示のポインタの簡略ブロック図である。 代表的な実施形態による、パケットを受信エージェントにリアルタイムで送信する方法を示す流れ図である。
以下の詳細な説明では、限定ではなく説明の目的で、具体的な詳細を開示する例示の実施形態が、本教示による実施形態の完全な理解を提供するために明らかにされる。しかしながら、本開示内容の利益を有する者には、本明細書に開示した具体的な詳細から逸脱しない本教示による他の実施形態も、添付の特許請求の範囲の範囲内にあることが明らかであろう。その上、よく知られたデバイス及び方法の説明は、この例示的な実施形態の説明を分かりにくくしないために省略されている場合がある。そのような方法及びデバイスも、本教示の範囲内にある。
一般に、数量に指定がないもの(terms “a”, “an” and “the”)は、本明細書及び添付の特許請求の範囲で用いられるとき、文脈が明らかに別段の規定をしていない限り、単数形及び複数形の双方の指示対象を含むことが理解される。したがって、例えば、「デバイス」は、1つのデバイス及び複数のデバイスを含む。
「実質的な」又は「実質的に」という用語は、本明細書及び添付の特許請求の範囲で用いられるとき、それらの通常の意味に加えて、許容可能な限度内又は程度内にあることを意味する。例えば、「実質的にキャンセルされる」は、当業者であれば、キャンセルを許容可能であるとみなすことを意味する。更なる例として、「実質的に除去される」は、当業者であれば、除去を許容可能であるとみなすことを意味する。
「ほぼ(approximately)」という用語は、本明細書及び添付の特許請求の範囲で用いられるとき、その通常の意味に加えて、当業者に許容可能な限度内又は数量内にあることを意味する。例えば、「ほぼ同じ」は、当業者であれば、比較されているアイテムを同じとみなすことを意味する。
一般に、リトライバッファは、リンクエラーが発生した場合又は受信エージェントがそれ以外で送信パケットの受信に成功しなかった場合の潜在的な再送に備えて、送信エージェントから受信エージェントに送信されている着信パケットストリームからのパケットを一時的に記憶する。様々な実施形態によれば、リトライバッファは、書き込みポインタ、再生ポインタ、及び読み出しポインタに依拠して、記憶されたパケットのステータスを追跡する。書き込みポインタは、着信パケットが記憶されるごとに前進される。再生ポインタは、各発信パケットが受信エージェントに送信されることによって前進され、読み出しポインタは、送信パケットの受信に成功した肯定応答によって前進される。
上述したHMCプロトコルによれば、例えば、送信エージェントによって送信される各パケット(例えば、データパケット)は、そのパケットがリトライバッファ内に記憶されるアドレス(書き込みポインタ)を示す8ビットのFRPフィールドを含み、受信エージェントから返される各パケットは、最後に受信に成功したFRP(読み出しポインタ)の値を示す8ビットのRRPフィールドを含む。しかしながら、8ビットのポインタフィールドを各パケットに組み込むことによって、アドレス指定可能空間は、256個のユニットにのみ制限される。このアドレス指定可能空間は、1つの「コンテキスト」として定義される。すなわち、従来のリトライバッファ空間は、256個のユニットに制限される。さらに、HMCプロトコルの場合、特に、256個のユニットはパケットではなくFLITであるので、各パケットは、通常、複数(整数個)のFLITからなる。したがって、ほとんどのパケットはマルチFLITパケットであるので、256個よりも実質的に少ないパケットが、256個のユニットに記憶される場合がある。例えば、各パケットが9FLIT長である場合、256個のユニットに制限される単一のコンテキストリトライバッファは、28個のパケット(それぞれ9個のFLITからなる)しか記憶することができない。したがって、RRPが受信されると、読み出しポインタは、書き込みポインタに遅れてリトライバッファアドレス空間を回り、これによって、やがてリトライバッファアドレス空間を折り返して先頭に戻る、あるいは、ラップアラウンドし、FRPの受信成功の肯定応答をまだ受信していないペンディング中のパケットに追いつく場合がある。その結果、パケットストリームの流れが中断される。
一般に、本発明の様々の代表的な実施形態は、複数のコンテキストを組み込んだ(したがって、例えば、256個のユニットからなる1つのコンテキストを有する従来のリトライバッファよりも大きい)単一の拡張されたリトライバッファを実施することによって、この問題に対処する。この実施形態では、リトライバッファの各コンテキストは、アドレス指定可能パケット空間よりも大きくない(例えば、上記例における256個のFLITよりも大きくない)。しかしながら、任意の所与の時点において、リトライバッファの複数のコンテキストがアクティブである場合があり、そのため、多数のリトライ動作が実行されている場合に、この拡張されたリトライバッファの全利益を、「バッファリングされる」パケットを記憶するのに利用することができる。
図1は、代表的な実施形態によるデータ通信システムの簡略ブロック図である。
図1を参照すると、データ通信システム100は、送信エージェント110と、受信エージェント130と、バス140とを備える。送信エージェント110は、トランザクションレイヤパケット(パケットストリーム)の着信パケットストリームを生成するトランザクションレイヤ105と、送信パス115と、リトライバッファ200とを備える。このリトライバッファは、バス140を介した受信エージェント130へのパケットの送信をバッファリングするとともにリトライ動作を管理するバッファメモリとして実施される。例えば、以下で論述するように、リトライバッファ200は、受信エージェント130によるパケットの受信成功(成功パケットと呼ばれる場合がある)を追跡し、受信に成功したとの肯定応答がなされていないあらゆるパケット(不成功パケットと呼ばれる場合がある)を、その不成功パケットの送信後であって受信不成功の表示の受信前に受信エージェントに引き続き送信されたあらゆるパケットとともに送信することをリトライする。バス140は、リトライバッファ200から受信エージェント130にパケットを送信するための順方向リンク141と、受信エージェント130からリトライバッファ200にパケットの成功又は失敗に関する情報を送信する戻りリンク142とを有する。例えば、戻りリンク142上で受信される肯定応答は、対応するパケットの受信成功を示すのに用いることができる。
図2及び図3は、代表的な実施形態によるデータ通信システムのリトライバッファ及びリトライ動作の実行前の例示のポインタの簡略ブロック図である。
図2及び図3を参照すると、リトライバッファ200は、代表的な第1のコンテキスト210(FRP空間0)と、第2のコンテキスト220(FRP空間1)と、第3のコンテキスト230(FRP空間2)とによって示される複数のコンテキストを備える。第1のコンテキスト210〜第3のコンテキスト230は、それぞれFRP空間0〜2として参照される場合がある。なぜならば、単一のコンテキストは、上記で論述した8ビットのFRP(アドレス)フィールドによってアドレス指定可能であるが、リトライバッファ200等のマルチコンテキストフルバッファは、より多くの数のアドレスに起因して、8ビットのFRPフィールドによってアドレス指定可能でないからである。すなわち、リトライバッファ200の第1のコンテキスト210〜第3のコンテキスト230のそれぞれは、256個のFLITであるアドレス指定可能空間よりも大きくならないように制限される。しかしながら、本例では、例示の目的で、アドレス指定可能空間は、第1のコンテキスト210〜第3のコンテキスト230のそれぞれの234個のFLITに制限される。また、本例では、各パケットは、9FLIT長(例えば、リトライバッファ200の最上行に示すFLIT0〜8)に仮定され、それゆえ、各コンテキストは、26個のパケットを含む。したがって、第1のコンテキスト210はFLIT0〜233を含み、第2のコンテキスト220はFLIT234〜468を含み、第3のコンテキスト230はFLIT468〜701を含む。その結果、リトライバッファ200は、それぞれ9個のFLITからなる78個までのパケット、すなわち、合計702個のFLITを記憶するように構成される。パケットは、第1のコンテキスト210における9FLIT幅読み出しポート215に入り、第3のコンテキスト230における9FLIT幅書き込みポート235から出て行く。
もちろん、様々な実施形態は、図2及び図3に示された例に示すようなコンテキスト及び/又はパケットのサイズに限定されるものではない。例えば、第1のコンテキスト210〜第3のコンテキスト230のそれぞれのアドレス指定可能空間は、243個のFLITに制限することができ、この場合、各コンテキストは、それぞれ9個のFLITを含む27個のパケットを含む。又は、第1のコンテキスト210〜第3のコンテキスト230のそれぞれのアドレス指定可能空間は、252個のFLITに制限することができ、この場合、各コンテキストは、それぞれ9個のFLITを含む28個のパケットを含む。同様に、パケットは、本教示の範囲から逸脱することなく、異なる数のFLIT(例えば、1FLIT長、2FLIT長等)を含むことができる。特に、サポートされるパケット混合体(packet mix)が拡張するにつれて、例えば、時に空のロケーションが存在することに起因して、リトライバッファ200の効率性が低下し始める場合がある。
一般に、任意の所与の時点において、リトライバッファ200の行に存在するパケットは、「バッファリングされた」、「ペンディング中」、又は「リタイアされた」として分類することができる。バッファリングされたパケットは、リトライバッファ200に書き込み済みであり、受信エージェント130への送信を待機しているパケットである。ペンディング中のパケットは、送信エージェント110によって送信済みであるが、受信エージェント130が受信に成功したとの肯定応答をまだ受けていないパケットである。リタイアされたパケットは、受信成功の肯定応答が受信されたパケットである。新たなパケットが第3のコンテキスト230の最後の行に書き込まれた後にリトライバッファが先頭に回帰してきたとき、リタイアされたパケットをやがて上書きすることができる。
図2及び図3は、バッファリング動作及びリトライ動作を実施するのに用いられる代表的なポインタも示している。書き込みポインタwr_ptrは、着信パケットストリームからの最も近時の(most recent)新たなパケット(例えば、9個のFLITを含む)が、例えばリアルタイムで配置又は記憶される行を指し示す。リトライバッファ200が、着信パケットを受信して記憶した後、書き込みポインタwr_ptrは、全メモリ深度TMDを法として上方に前進する。図示した例では、702を法としている。すなわち、wr_ptrは、TMD−1(例えば、701)に達するまでインクリメンタルに上方に前進し(インクリメンタルに増加される)、その後、第1のコンテキスト210内の行0にロールオーバし、前進シーケンスを再度開始する。このように、パケットは、最後のコンテキスト(例えば、第3のコンテキスト230)までリトライバッファ200に順次書き込まれ、その後、最初のコンテキスト(例えば、第1のコンテキスト210)に折り返して、この最初のコンテキストに順次書き込まれる。
再生ポインタpb_ptrは、以前に記憶された対応するパケットがバス140の順方向リンク141を介して受信エージェント130に送信されるリトライバッファ200の行を指し示す。この送信プロセスを管理するのに用いられるトークンは、新たなパケットが再生ポインタpb_ptrに応じて送信される際に消費されなければならない。書き込みポインタwr_ptrと再生ポインタpb_ptrとの間におけるリトライバッファ200内のいずれのパケットも、上記で論述したような「バッファリングされた」とみなされる。リトライ動作がない場合、再生ポインタpb_ptrは、上記で論述したように、TMDを法として、パケット送信ごとに上方に前進し、実際には、書き込みポインタwr_ptrの1行後に留まる。
読み出しポインタrd_ptrは、受信エージェント130によってパケットの受信が成功したことの最後の(最も近時の)肯定応答を有するパケットを記憶するリトライバッファ200の行を指し示す。すなわち、読み出しポインタrd_ptrは、最も近時の成功パケットを含む行を指し示す。したがって、読み出しポインタrd_ptrと再生ポインタpb_ptrとの間に位置するいずれのパケットも、上記で論述したような「ペンディング中」とみなされ、読み出しポインタrd_ptrに先行するパケットは、上記で論述したような「リタイアされた」とみなされる。送信の成功及び読み出しポインタrd_ptrの前進を確保することは、8ビットのRRPフィールドを観察することに基づくことができる。
図2に示す例では、書き込みポインタwr_ptr、pb_ptr、及び読み出しポインタrd_ptrのそれぞれは、第1のコンテキスト210内の行を指し示している。書き込みポインタwr_ptrは、着信パケットストリームの新たなパケットが(リアルタイムに)到着するにつれて、第2のコンテキスト220及び第3のコンテキスト230の行をインクリメンタルに前進し、ついには、書き込みポインタwr_ptrは、第1のコンテキスト210の最初の行に折り返す。例えば、図3では、書き込みポインタwr_ptrは、次の連続したコンテキスト(第2のコンテキスト220)に前進し、この時、第2のコンテキスト220内の行を指し示している。同様に、再生ポインタpb_ptrは、記憶されたパケットが送信されるにつれて、第2のコンテキスト220及び第3のコンテキスト230の行をインクリメンタルに前進し、ついには、再生ポインタpb_ptrは、第1のコンテキスト210の最初の行に折り返す、あるいはラップアラウンドする。この場合も、図3では、再生ポインタpb_ptrも、次の連続したコンテキスト(第2のコンテキスト220)に前進する一方、読み出しポインタrd_ptrは、まだ第1のコンテキスト210に存在する。書き込みポインタwr_ptr、再生ポインタpb_ptr、及び/又は読み出しポインタrd_ptrは、特定の動作状態に応じて、同じ又は異なるコンテキストに位置する場合があることが理解されよう。
これと比較して、従来のリトライバッファは、1つだけのコンテキストの最後の行に書き込みを行った後、最初の行に折り返す。したがって、最初の行のパケットの受信成功が、受信デバイスによってまだ肯定応答されていない(すなわち、パケットがまだリタイアされていない)とき、適切な肯定応答が受信されて、コンテキストの先頭にある最初の行(及び後続の行)が解放されるまで、新たなパケットをもはやバッファリングすることができない。この場合、データのリアルタイムの書き込みは行われない。すなわち、送信エージェント110へのパケットの流れは停止し、リアルタイム送信が中断される。
図2を再び参照すると、矢印240は、再生ポインタpb_ptrと読み出しポインタrd_ptrとの間の間隔を示す。この間隔は、図示した例では、ラウンドトリップ時間(RTT)とFLIT送信レートとの積(すなわち、RTT×FLIT送信レート)によって求められる。RTTは、パケットの送信と対応する肯定応答の受信との間の時間であり、FLIT送信レートは、リトライバッファ200が、バス140の順方向リンク141を介して受信エージェント130に送信するレートである。FLIT送信レートは、リンクレベル送信レートと呼ばれる場合もある。矢印240によって示される間隔は、上記で論述したペンディング中のパケットの行も包含する。特に、RTTとFLIT送信レートとの積が、図示した例では234個のFLIT未満である限り、未処理の同じ値の複数のFRPが存在することはない。
上述したように、リトライ動作がない場合、再生ポインタpb_ptrは、TMDを法として、パケット送信ごとに上方に前進し、したがって、実際には、書き込みポインタwr_ptrの1行後に留まる。しかしながら、リトライ動作が開始すると、再生ポインタpb_ptrは、再度前進することが可能になる前に、リセットされて、読み出しポインタrd_ptrのロケーションに戻る。図4及び図5は、代表的な実施形態によるリトライ動作を実施するためのステップのシーケンスを示す、データ通信システムのリトライバッファのブロック図である。
リトライ動作の開始を示す図4を参照すると、例示の目的で、リトライ動作が、リトライ要求に応答して開始されたものと仮定されている。このリトライ要求は、例えば、受信エージェント130によって開始され、リトライ要求パケットに存在する最後に受信された有効なRRPとしてリトライバッファ200によって受信される。この場合、リトライ動作が要求された時点におけるそれぞれのロケーションをマーキングするために、再生ポインタpb_ptrの現在のロケーションが、現在の再生ロケーションを示す再生ポインタスナップショットpb_ptr_snによってマーキングされ、読み出しポインタrd_ptrの現在のロケーションが、現在の読み出しロケーションを示す読み出しポインタスナップショットrd_ptr_snによってマーキングされる。再生ポインタpb_ptrは、リセットされて、読み出しポインタrd_ptr(及び対応する読み出しポインタスナップショットrd_ptr_sn)のロケーションに戻される。
その間、リトライバッファ200は、リアルタイムの着信パケットストリームを受信及び記憶し続け、書き込みポインタwr_ptrは、それに応じて前進し続ける。また、再生ポインタpb_ptrは、再配置された後、再度、再生ポインタpb_ptrの新たなロケーションから開始して、TMDを法として、パケット送信ごとに前進を開始する。この結果、読み出しポインタスナップショットrd_ptr_snと再生ポインタスナップショットpb_ptr_snとの間のパケットがインクリメンタルに再送され、対応する肯定応答が受信され、これによって、読み出しポインタrd_ptrが前進される。
図4に見ることができるように、再生ポインタpb_ptrは、この時、書き込みポインタwr_ptrに対して大きく遅れている。しかしながら、再生ポインタpb_ptrは、書き込みポインタwr_ptrよりも高速に前進する。その理由の一部は、再生ポインタpb_ptrがリンクレベル送信レートで進むことが可能である一方、書き込みポインタwr_ptrは、FLIT発行レートで進み、このFLIT発行レートは、リンクレベル送信レートよりも少なくともインクリメンタルに遅くなるからである。FLIT発行レートは、トランザクションレイヤ発行レートと呼ばれる場合もある。加えて、再送されているペンディング中のパケットのトークンは、(最初の送信中に)既に消費されているので、再生ポインタpb_ptrが前進するレートは、フロー制御によって抑制されない。もちろん、再生ポインタpb_ptrが再生ポインタスナップショットpb_ptr_snのロケーションを通過すると、フロー制御は、再生ポインタpb_ptrに応答して、バッファリングされたパケットが(初めて)送信される際にトークンが消費されることを必要とする。したがって、再生ポインタpb_ptrが書き込みポインタwr_ptrに向けて大きく進行する前に、後続のリトライ動作が発生しない限り、再生ポインタpb_ptrは、時間とともに書き込みポインタwr_ptrにやがて追いつくことができる。
図5は、再生ポインタpb_ptrが再生ポインタスナップショットpb_ptr_snのロケーションを通過したことによって示されるように、リトライ動作(「リプレイ後フェーズ(post-replay phase)」と呼ばれる場合がある)の最中のリトライバッファ200を示している。再生ポインタスナップショットpb_ptr_snのロケーションを通過後、再生ポインタpb_ptrは、バッファリングされたパケットが受信エージェント130に送信されるリトライバッファ200の行を改めて指し示す。これは、リプレイ後フェーズと呼ばれる場合がある。特に、読み出しポインタrd_ptrも、前進しており、受信エージェント130がパケットの受信に成功したことの最後の(最も近時の)肯定応答を有するパケットを記憶するリトライバッファ200の行を指し示す。図5では、コンテキストベースが、第1のコンテキスト210から第2のコンテキスト220に完全にインクリメントしており、そのため、書き込みポインタwr_ptr、pb_ptr、及び読み出しポインタrd_ptrのそれぞれは、第2のコンテキスト220内の行を指し示す。これは、最後に返されたRRPがFLIT233に対応する行(第1のコンテキスト210における最も高い行)を通過して前進し、その結果、読み出しポインタrd_ptrがFLIT234を含む行における次のコンテキスト(第2のコンテキスト220)に加わる時に発生する。図示した動作例では、第2のコンテキスト220は、書き込みポインタwr_ptr及び再生ポインタpb_ptrが位置するコンテキストと偶然同じコンテキストでもある。この時点において、第1のコンテキスト210の行の全てが、リタイアされたパケットを含み、これらのリタイアされたパケットは、書き込みポインタwr_ptrがやがて行0にロールオーバしたときに安全に上書きすることができる。
図5に示すように、再生ポインタpb_ptrは、依然として、書き込みポインタwr_ptrにまだ追いついていない。この差は、矢印541によって示され、この矢印は、上記で論述したように、バッファリングされたパケットを示す。バッファリングされたFLITの数は、RTTとFLIT発行レートとの積に等しい。一方、再生ポインタpb_ptrと読み出しポインタrd_ptrとの間の差が、矢印542によって示され、この矢印は、ペンディング中のパケットを示す。上記で論述したように、ペンディング中のFLITの数は、RTTとFLIT送信レートとの積(矢印540によっても示される)に等しい。この時点において、別のリトライ動作が、リトライ要求に応答して開始された場合、矢印540によって示される間隔は、矢印240によって示される間隔よりも大きいので、再生ポインタpb_ptrは、最初のリトライ動作について書き込みポインタwr_ptrに遅れていたよりも更に遅れることになる。実際には、連続したリトライ動作が、互いに比較的接近して発生した場合、書き込みポインタwr_ptrは、やがて再生ポインタpb_ptrのかなり前方になる場合があり、そのため、折り返して、あるいはラップアラウンドして、肯定応答をまだ受けていないペンディング中のパケット(例えば、読み出しポインタrd_ptrによって示される)の上書きを開始する場合がある。この場合、新たなパケットのリアルタイム送信を中断する必要がある。中断しない場合、これによって、リトライバッファは、リトライ動作が要求された場合、破損したリトライ動作に対して脆弱になる。しかしながら、いずれにしてもそのようなイベントの発生は、リトライバッファ200のサイズが大きいことに起因して起こる可能性はない。
様々な実施形態では、リアルタイムデータを記憶するためのリトライ動作を実行する方法は、プロトコル又は複数の基本ルールによって効果的に管理される。これらの基本ルールは、上記で論述した書き込みポインタwr_ptr、再生ポインタpb_ptr、再生ポインタスナップショットpb_ptr_sn、読み出しポインタrd_ptr、及び読み出しポインタスナップショットrd_ptr_snに関するルールを含む。より詳細には、そのようなルールの例示のセットは、以下のものを含むことができる。
第1に、書き込みポインタwr_ptr及び再生ポインタpb_ptrは、例えば、図2によって図示された例に示すように、702を法とする9個のFLITの倍数単位でインクリメントする。
第2に、読み出しポインタrd_ptrは、最後に返されたRRP(8ビット量)にcontext_base_readを加えたものに等しい。このcontext_base_readは、rd_ptrが位置すべきコンテキスト(例えば、第1のコンテキスト210〜第3のコンテキスト230のうちの1つ)を追跡するものである。context_base_readは、図示した例では、0、234、又は468の値を取ることができる。
第3に、RRPは、0〜255の任意の数とすることができる。しかしながら、上記で論述した例を管理するルールによれば、RRPは、0〜233の値しか取らない。この範囲の値の利点は、234が9の倍数(factor)であるということであり、これによって、例示の構成の下での計算が単純になる。もちろん、RRPは、本教示の範囲から逸脱することなく、0〜251(252は9の別の倍数である)等の他の範囲内になるように設計することができる。実際には、RRPは、任意の特定の数の倍数とすることができる。ただし、幾つかの値は、当業者に明らかであるように、実施を単純にする。
第4に、上述したcontext_base_readは、値0、234、468間でインクリメントし、その後、最初のcontext_base_read値に折り返すことによって同じ値の間を繰り返す。図2によって示される例を参照すると、値0は、第1のコンテキスト210の最初の行に対応し、値234は、第2のコンテキスト220の最初の行に対応し、468は、第3のコンテキスト230の最初の行に対応する。
第5に、context_base_readは、最後に返されたRRPが折り返して0を通過するときに、例えば、234だけインクリメントする。RRPストリームのストール(stall)が存在する場合であっても、折り返しを検出するロジックがある。1つの注意点は、このロジックが、連続するRRPの戻りの間のストールが234個のFLITからなるFRP空間の2分の1よりも大きい場合に機能しない場合があるということである。
第6のものは、上記で論述したように、以下の動作のリトライの開始時に、ごく僅かに(atomically)起こる。再生ポインタpb_ptrは、リプレイを終了する必要があるとともにトークンの消費を再度開始する必要がある箇所を示すために、pb_ptr_snに保存される。読み出しポインタrd_ptrは、リプレイを開始する必要がある箇所を示すために、rd_ptr_snに保存される。再生ポインタpb_ptrは、リプレイ動作の開始位置を示すために、読み出しポインタrd_ptrに設定される。
第7に、上述したように、再生ポインタpb_ptrは、トランザクションレイヤリンクのFLIT送信レート(例えば、200Gbps/128=1.5625FLIT/ns)で前進し、したがって、FLIT発行レートである、書き込みポインタwr_ptrが前進するレートよりも高速である。すなわち、FLIT発行レートは、リンクのオーバフローを防止するために、FLIT送信レートよりも僅かに低くなるようにペーサによって設定される。
第8に、FRP値は、読み出されると、FLITの位置のFLIT粒度の再生ポインタpb_ptrに1を加え、更に234を法とする値が詰め込まれる。
第9に、読み出しポート215及び書き込みポート235は、それぞれ9FLIT幅であるので、FLITは、9FLITのチャンクでスケジューラに送信される。未使用のFLIT位置は、NULLのFLIT(すなわち、0)に設定される。リプレイ中、現在の読み出しポインタrd_ptrが9の倍数でない場合、再送されるべきでない最初のFLIT(なぜならば、これらのFLITは、エラーのあるパケットの前に到来したものであるので)をNULLにするロジックが存在する。
上記ルール、並びに様々なポインタ及び値の間の対応する相互関係は例示であり、これらのルールは、本教示の範囲から逸脱することなく、任意の特定の状況に固有の利益を提供するように又は様々な実施態様のアプリケーション特有の設計要件を満たすように変化し得ることが理解されよう。例えば、上述したように、書き込みポインタwr_ptr及び再生ポインタpb_ptrは、FLITの他の数の倍数でインクリメントすることができる。
さらに、図2〜図5は、リトライバッファ200を、3つのコンテキストを有するものとして示しているが、様々な代替の実施形態によれば、設計者/ユーザがこの機能にどれだけの量のメモリを充てる用意があるのかということ以外に、マルチコンテキストリトライバッファは、コンテキストの数に関して限定されるものではない。各コンテキストは、例えば、0FLIT長〜255FLIT長とすることができ、ここで、数255は、一般的な関係2(pointer width)−1に基づいている。ここで、pointer width(ポインタ幅)は、FRP又はRRPの幅を指す。そのため、FRPポインタ幅及び/又はRRPポインタ幅が8である図示した実施形態に適用されると、コンテキストは、2−1=255となる。さらに、各コンテキストの長さは、行幅(図示した例では9である)の倍数であるべきである。そうでない場合、他のポインタルールが影響を受けることになる。
実際問題として、ゼロは、ゆるい下限である一方、実際の下限は、ペンディング中のパケット内のFLITの予想される最大数によって設定される。したがって、ペンディング中のFLITのセットは、常に、(例えば、図3に示すように)多くとも2つの連続したコンテキストに及んでいる。
これとは対照的に、バッファリングされたパケット内のFLITのセット(すなわち、書き込みポインタwr_ptrが再生ポインタpb_ptrからどれだけ前方にいるか)は、3つ以上のコンテキストに及ぶ場合がある。制限は、上述したように、書き込みポインタwr_ptrがマルチコンテキストリトライバッファの先頭に折り返して、読み出しポインタrd_ptrによって示される空間を上書きすることができないということである。
図6は、代表的な実施形態による、パケットを受信エージェントにリアルタイムで送信する方法を示す流れ図である。
図6を参照すると、パケットは、ブロックS611において、送信エージェント(例えば、送信エージェント110)のリトライバッファ(例えば、リトライバッファ200)に順次書き込まれる。このリトライバッファは、複数のコンテキスト(例えば、第1のコンテキスト210〜第3のコンテキスト230)を含む。リトライバッファへのパケットの書き込みは、リトライバッファにおいて書き込みポインタを設定し、前進させることによって追跡することができる。すなわち、書き込みポインタは、各受信パケットに応答して、リトライバッファ内の次の書き込みロケーションにインクリメンタルに増加される。パケットは、例えば、送信エージェントのトランザクションレイヤによってリトライバッファにFLIT発行レートで書き込むことができる。
ブロックS612において、リトライバッファ内のパケットは、受信エージェント(例えば、受信エージェント130)に順次送信され、その間、追加のパケットが、リトライバッファに順次書き込まれ続ける。パケットの送信は、リトライバッファにおいて再生ポインタを設定し、前進させることによって追跡することができる。すなわち、再生ポインタは、各パケットがリトライバッファから送信されることに応答して、リトライバッファ内の次の再生ロケーションにインクリメンタルに増加される。パケットは、例えば、上記で論述したように、トランザクションレイヤ発行レートよりも高速のリンクレベル送信レートで受信エージェントに送信することができる。
ブロックS613において、各パケットが、受信エージェントに送信された順序で、受信エージェントによる受信に成功したか否かが判断される。受信エージェントが送信パケットの受信に成功したとき(ブロックS613:Yes)、ブロックS614において、対応する肯定応答が受信エージェントから受信され、その間、リトライバッファに書き込まれたパケットは、受信エージェントに順次送信され続ける。受信成功は、リトライバッファにおいて読み出しポインタを設定し、前進させることによって追跡することができる。すなわち、読み出しポインタは、送信パケットに対応する受信成功の各肯定応答に応答してリトライバッファ内の次の読み出しロケーションにインクリメンタルに増加される。一方、受信エージェントが送信パケットの受信に成功しなかったとき(ブロックS613:No)、ブロックS615において、リトライ要求が受信エージェントから受信される。次に、ブロックS616において、リトライバッファからのペンディング中のパケットが、受信エージェントによる受信に成功しなかった(その結果、リトライ要求が得られる)送信パケットから開始して、受信エージェントに再送される。パケットの再送は、再生ポインタを、受信に成功しなかった送信パケットのロケーションにリセットし、再生ポインタを再送パケットを用いて前進させることによって追跡することができる。その間、追加のパケットが、リトライバッファにリアルタイムで順次書き込まれ続ける。
一般に、バッファリングされるパケットのより大きなセットを単一のバッファメモリにおいてサポートすることができることによって、リアルタイムストリーミングアプリケーションは、リンクにビットエラーが存在する状態で、より高い信頼性(すなわち「稼働時間」)を有することが可能になる。これは、高い稼働時間を必要とする高帯域幅リアルタイムストリーミングアプリケーションにとって重要である。また、より大きなリトライバッファによって、バッファリングされたパケットの送信と受信エージェントによるパケットの受信成功の肯定応答との間に、より長いRTTレイテンシが許容される。さらに、より大きなメモリ空間は、大きなオンチップメモリマクロを用いて高帯域幅ストリーミングアプリケーションのリトライバッファ記憶及びリトライフェーズバッファリングを提供する能力を提供する。
当業者であれば、本教示に従う多くの変形形態が可能であり、かつ、添付の特許請求の範囲の範囲内にあることを理解する。これらの変形形態及び他の変形形態は、本明細書、図面、及び添付の特許請求の範囲を調べた後、当業者には明らかになるであろう。したがって、本発明は、添付の特許請求の範囲の趣旨及び範囲内を除いて限定されるべきではない。
105 トランザクションレイヤ
110 送信エージェント
115 送信バス
130 受信エージェント
140 バス
141 順方向リンク
142 戻りリンク
200 リトライバッファ

Claims (20)

  1. パケットストリームのパケットをリアルタイムで送信する方法であって、
    パケットを送信エージェント(110)のリトライバッファ(200)に順次書き込むステップであって、前記リトライバッファは、複数のコンテキストを含む、書き込むステップ(S611)と、
    前記リトライバッファに書き込まれた前記パケットを受信エージェント(130)に順次送信するとともに、追加のパケットを前記リトライバッファに順次書き込み続けるステップ(S612)と、
    前記受信エージェントが前記送信パケットの受信に成功したとき、前記受信エージェントから肯定応答を受信するとともに、前記リトライバッファに書き込まれた前記パケットを前記受信エージェントに順次送信し続けるステップ(S614)と、
    前記受信エージェントが前記送信パケットの受信に成功しなかったとき、前記受信エージェントからリトライ要求を受信するステップ(S615)と、
    前記受信エージェントが受信に成功せず、その結果、前記リトライ要求が得られた前記送信パケットから開始して、前記リトライバッファから前記受信エージェントに前記パケットを再送するとともに、前記追加のパケットを前記リトライバッファに順次書き込み続けるステップ(S616)と、
    を含む、パケットストリームのパケットをリアルタイムで送信する方法。
  2. 最も近時に受信されたパケットが書き込まれる前記リトライバッファ内の書き込みロケーションを示す書き込みポインタ(wr_ptr)を設定するステップと、
    以前に記憶されたパケットが前記リトライバッファから前記受信エージェントに送信される前記リトライバッファ内の再生ロケーションを示す再生ポインタ(pb_ptr)を設定するステップと、
    前記受信エージェントによる受信成功の肯定応答が受信された、以前に送信されたパケットの前記リトライバッファ内の読み出しロケーションを示す読み出しポインタ(rd_ptr)を設定するステップと、
    を更に含む、請求項1に記載の方法。
  3. 前記書き込みポインタは、各受信パケットに応答して、前記リトライバッファ内の次の書き込みロケーションにインクリメンタルに増加され、
    前記再生ポインタは、前記各パケットが前記リトライバッファから送信されることに応答して、前記バッファ内の次の再生ロケーションにインクリメンタルに増加され、
    前記読み出しポインタは、送信パケットに対応する受信成功の各肯定応答に応答して、前記リトライバッファ内の次の読み出しロケーションにインクリメンタルに増加される、
    請求項2に記載の方法。
  4. 前記リトライ要求に応答して、前記リトライバッファ内の現在の再生ロケーションを示す再生ポインタスナップショットを前記再生ポインタに設定するステップと、
    前記リトライ要求に応答して、前記リトライバッファ内の現在の読み出しロケーションを示す読み出しポインタスナップショットを前記読み出しポインタに設定するステップと、
    前記再生ポインタを前記読み出しポインタによって示される前記読み出しロケーションにリセットするステップと、
    を更に含み、
    前記リトライバッファから前記受信エージェントにパケットを再送するステップは、前記リセットされた再生ポインタから開始する、請求項2に記載の方法。
  5. 前記送信エージェントのトランザクションレイヤ(105)から受信されたパケットが前記リトライバッファに順次書き込まれる受信レートよりも高速の送信レートで、前記リトライバッファから前記受信エージェントに前記パケットを順次再送するステップ、
    を更に含む、請求項4に記載の方法。
  6. 前記より高速の送信レートは、リンクレベル送信レートに対応し、前記受信レートは、トランザクションレイヤ発行レートに対応する、請求項5に記載の方法。
  7. 前記リトライバッファは、バッファリングされたパケットを前記書き込みポインタと前記再生ポインタとの間に含み、該バッファリングされたパケットは、前記リトライバッファに書き込まれているが、前記受信エージェントにまだ送信されていない、請求項2に記載の方法。
  8. 前記リトライバッファは、ペンディング中のパケットを前記再生ポインタと前記読み出しポインタとの間に含み、該ペンディング中のパケットは、前記リトライバッファから送信されているが、前記受信エージェントが受信に成功したとの肯定応答をまだ受けていない、請求項2に記載の方法。
  9. 前記リトライバッファは、リタイアされたパケットを前記リトライバッファの先頭と前記読み出しポインタとの間に含み、前記リタイアされたパケットは、前記受信エージェントが受信に成功したとの肯定応答を受けている、請求項2に記載の方法。
  10. 前記送信エージェントから受信された前記追加のパケットを前記リトライバッファに順次書き込み続けるステップは、前記パケットが再送されているコンテキストとは異なるコンテキストに前記追加のパケットを順次書き込むステップを含む、請求項1に記載の方法。
  11. 前記パケットを前記リトライバッファに順次書き込むステップは、前記リトライバッファの最後のコンテキストの終わりに達した後、前記最後のコンテキストに前記パケットを書き込むことから最初のコンテキストに前記パケットを書き込むことに折り返すステップを含む、請求項1に記載の方法。
  12. 前記各パケットは、複数のフローユニット(FLIT)を含み、前記各FLITは、複数のビットを含む、請求項1に記載の方法。
  13. 前記リトライバッファ内の前記複数のコンテキストの該各コンテキストは、複数の行を含み、該各行は、前記複数のFLITを含むパケットに対応する、請求項12に記載の方法。
  14. 前記各コンテキストの長さは、該コンテキスト内の行の幅の倍数である、請求項13に記載の方法。
  15. パケットを受信エージェント(130)に送信する方法であって、
    パケットストリームのパケットをリトライバッファ(200)にリアルタイムで順次書き込むとともに、前記リトライバッファにおいて書き込みポインタを前進させることによって前記パケットの前記書き込みを追跡するステップ(S611)と、
    前記リトライバッファに書き込まれた前記パケットを前記受信エージェントに順次送信するとともに、再生ポインタを前進させることによって前記パケットの前記送信を追跡するステップ(S612)と、
    前記受信エージェントによる前記送信パケットの受信成功に肯定応答する情報を受信するとともに、読み出しポインタを前進させることによって前記受信成功を追跡するステップ(S614)と、
    前記送信パケットが前記受信エージェントによる受信に成功しなかったとき、リトライ要求を受信するステップ(S615)と、
    前記リトライ要求に応答して、前記再生ポインタを前記読み出しポインタの現在のロケーションに再配置するステップと、
    前記リトライ要求に応答して、前記再配置された再生ポインタから開始して、前記リトライバッファに書き込まれたパケットを前記受信エージェントに順次再送することによってリトライ動作を開始するとともに、前記再生ポインタを前進させることによって前記パケットの前記再送を追跡するステップ(S616)と、
    を含み、
    前記パケットストリームの前記パケットは、前記リトライ動作中、前記リトライバッファにリアルタイムで書き込まれ続けるとともに、前記書き込みポインタによって追跡され続ける、パケットを受信エージェントに送信する方法。
  16. 前記リトライ要求に応答して、前記リトライバッファ内の現在の再生ロケーションを示す再生ポインタスナップショットを前記再生ポインタに設定するステップと、
    前記リトライ要求に応答して、前記リトライバッファ内の現在の読み出しロケーションを示す読み出しポインタスナップショットを前記読み出しポインタに設定するステップと、
    を更に含む、請求項15に記載の方法。
  17. バス(140)を介してパケットを受信エージェント(130)に送信するための送信エージェント(110)であって
    前記受信エージェントに送信されるパケットを発行するように構成されたトランザクションレイヤ(105)と、
    リトライバッファ(200)であって、
    該送信エージェントの前記トランザクションレイヤからの前記パケットをリアルタイムで順次受信して記憶することと、
    前記バスの順方向リンクを介して、前記記憶されたパケットを前記受信エージェントに順次送信することであって、まだ送信されていない前記記憶されたパケットは、バッファリングされたパケットである、送信することと、
    前記受信エージェントが前記送信パケットの受信に成功したときに、前記受信エージェントから肯定応答を受信することであって、前記肯定応答がまだ受信されていない前記送信パケットは、ペンディング中のパケットである、受信することと、
    前記受信エージェントによる受信に成功していない前記送信パケットから開始して、前記ペンディング中のパケットを前記受信エージェントに順次再送することと、
    該送信エージェントの前記トランザクションレイヤからの前記パケットをリアルタイムで順次受信して記憶し続けるとともに、前記ペンディング中のパケットを順次再送することと、
    を行うように構成された、リトライバッファと、
    を備える、バスを介してパケットを受信エージェントに送信するための送信エージェント。
  18. 前記送信エージェントはホストデバイスを含み、前記受信エージェントはメモリデバイスを含む、請求項17に記載の送信エージェント。
  19. 前記リトライバッファは、
    前記トランザクションレイヤから最も近時に受信されたパケットが記憶される書き込みロケーションを示すように設定された書き込みポインタ(wr_ptr)と、
    記憶されたパケットが最も近時に送信された再生ロケーションを示す再生ポインタ(pb_ptr)と、
    肯定応答が受信された、以前に送信されたパケットの読み出しロケーションを示すように設定された読み出しポインタ(rd_ptr)と、
    を備える、請求項17に記載の送信エージェント。
  20. 前記リトライバッファは、複数のコンテキストを含み、前記書き込みポインタ、前記再生ポインタ、及び前記読み出しポインタのそれぞれは、隣接するコンテキスト間を前進することができる、請求項19に記載の送信エージェント。
JP2015049283A 2014-03-26 2015-03-12 パケットを送信する方法及び送信エージェント Active JP6584797B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/225,691 2014-03-26
US14/225,691 US9356737B2 (en) 2014-03-26 2014-03-26 Retry buffer and method of performing retry operation using retry buffer

Publications (2)

Publication Number Publication Date
JP2015188215A true JP2015188215A (ja) 2015-10-29
JP6584797B2 JP6584797B2 (ja) 2019-10-02

Family

ID=54067157

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015049283A Active JP6584797B2 (ja) 2014-03-26 2015-03-12 パケットを送信する方法及び送信エージェント

Country Status (3)

Country Link
US (1) US9356737B2 (ja)
JP (1) JP6584797B2 (ja)
DE (1) DE102015205351A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017046319A (ja) * 2015-08-28 2017-03-02 富士通株式会社 伝送装置およびリトライ方法
CN108540274A (zh) * 2018-01-24 2018-09-14 北京理工大学 一种基于NB-iot的数据传输方法及装置
US10996891B2 (en) 2019-02-28 2021-05-04 International Business Machines Corporation Token management for write commands transmitted by a host over a plurality of interfaces to a storage controller
US11010248B2 (en) * 2019-02-28 2021-05-18 International Business Machines Corporation Reuse of resources in a storage controller for executing write commands over a plurality of interfaces
CN116089346B (zh) * 2023-04-07 2023-07-28 芯砺智能科技(上海)有限公司 一种嵌入式总线上错误数据重传方法、系统、介质及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62210746A (ja) * 1986-03-12 1987-09-16 Hitachi Ltd デ−タ再送方式
JPH01228231A (ja) * 1988-03-08 1989-09-12 Mitsubishi Electric Corp データ転送制御方式
JPH04274631A (ja) * 1991-03-01 1992-09-30 Nippon Telegr & Teleph Corp <Ntt> データ再送伝送方式
JP2001268159A (ja) * 2000-01-19 2001-09-28 Wiznot Corp Tcp/ipをハードウェア的に処理する装置及びその動作方法
WO2012066824A1 (ja) * 2010-11-16 2012-05-24 株式会社日立製作所 通信装置および通信システム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0876023A1 (en) * 1997-04-30 1998-11-04 Sony Corporation Transmitter and transmitting method, receiver and receiving method, and transceiver and transmitting/receiving method
JP3709289B2 (ja) * 1998-09-01 2005-10-26 株式会社日立製作所 データ再送を実行するデータ送受信装置及び並列プロセッサシステム
US6665807B1 (en) * 1998-09-04 2003-12-16 Hitachi, Ltd. Information processing apparatus
FI111505B (fi) * 1999-05-31 2003-07-31 Nokia Corp Menetelmä ohjaustiedon välittämiseksi tiedonsiirtojärjestelmässä, tiedonsiirtojärjestelmä, langaton päätelaite ja tukiasemajärjestelmä
JP4287751B2 (ja) * 2002-03-29 2009-07-01 パナソニック株式会社 マルチキャリア伝送におけるデータ再送方法およびデータ再送制御装置を備えた通信装置
US7653060B2 (en) * 2005-09-26 2010-01-26 David Mayhew System and method for implementing ASI over long distances

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62210746A (ja) * 1986-03-12 1987-09-16 Hitachi Ltd デ−タ再送方式
JPH01228231A (ja) * 1988-03-08 1989-09-12 Mitsubishi Electric Corp データ転送制御方式
JPH04274631A (ja) * 1991-03-01 1992-09-30 Nippon Telegr & Teleph Corp <Ntt> データ再送伝送方式
JP2001268159A (ja) * 2000-01-19 2001-09-28 Wiznot Corp Tcp/ipをハードウェア的に処理する装置及びその動作方法
WO2012066824A1 (ja) * 2010-11-16 2012-05-24 株式会社日立製作所 通信装置および通信システム

Also Published As

Publication number Publication date
US9356737B2 (en) 2016-05-31
US20150280865A1 (en) 2015-10-01
DE102015205351A1 (de) 2015-10-01
JP6584797B2 (ja) 2019-10-02

Similar Documents

Publication Publication Date Title
JP6584797B2 (ja) パケットを送信する方法及び送信エージェント
US11308024B2 (en) Multi-path RDMA transmission
US7353306B2 (en) Storage controller redundancy using bi-directional reflective memory channel
US6393023B1 (en) System and method for acknowledging receipt of messages within a packet based communication network
EP2774412B1 (en) Packet ordering based on delivery route changes
KR101913972B1 (ko) 암시적 확인응답을 활용한 효율적인 링크 계층 재시도 프로토콜
CN101432629B (zh) 同步数据通信
KR20160013177A (ko) 링크 패브릭 패킷에 비동기적인 플릿 번들을 이용한 링크 전달, 비트 오류 검출 및 링크 재시도
US8713252B1 (en) Transactional consistency scheme
US6941391B2 (en) Fencepost descriptor caching mechanism and method therefor
CN103141050B (zh) 快速通道互联系统中数据包重传方法、节点
KR20160014680A (ko) 흐름 제어 패킷 기반 네트워크에서 지연 지터를 줄이는 계층적/무손실 패킷 선점
CN109981385A (zh) 一种实现丢包检测的方法、装置和系统
EP2206294B1 (en) A memory buffer system and a method for operating a memory buffer system for fast data exchange
CN103368703B (zh) 数据包重传方法、数据包接收方法及装置
US9350493B1 (en) Multi-protocol data transfers
US20060224745A1 (en) Error recovery mechanism and network element comprising same
US9509623B2 (en) Information processing device, information processing system, and method for processing packets from transmitting devices
JP4489116B2 (ja) リングインターコネクト上のパケットの同期的非バッファフロー制御のための方法及び装置
US20160352832A1 (en) Enhancing data consistency in cloud storage system by entrance data buffering
US20240146806A1 (en) Intermediate apparatus, communication method, and program
US7324564B2 (en) Transmitting odd-sized packets over a double data rate link
US20240121294A1 (en) Rendezvous to enable congestion management
JP2004192380A (ja) データ転送装置
US8233478B2 (en) Method and an apparatus for data storage and communications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180306

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190226

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190726

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190809

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190904

R150 Certificate of patent or registration of utility model

Ref document number: 6584797

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250