JP5166609B2 - リソースの粒度がクレジットの粒度よりも大きいときのクレジット管理 - Google Patents

リソースの粒度がクレジットの粒度よりも大きいときのクレジット管理 Download PDF

Info

Publication number
JP5166609B2
JP5166609B2 JP2011543552A JP2011543552A JP5166609B2 JP 5166609 B2 JP5166609 B2 JP 5166609B2 JP 2011543552 A JP2011543552 A JP 2011543552A JP 2011543552 A JP2011543552 A JP 2011543552A JP 5166609 B2 JP5166609 B2 JP 5166609B2
Authority
JP
Japan
Prior art keywords
data
credits
packet
credit
header
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.)
Active
Application number
JP2011543552A
Other languages
English (en)
Other versions
JP2012514384A (ja
Inventor
ジェイムズ ワン
ゾンジャン チェン
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.)
Apple Inc
Original Assignee
Apple 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 Apple Inc filed Critical Apple Inc
Publication of JP2012514384A publication Critical patent/JP2012514384A/ja
Application granted granted Critical
Publication of JP5166609B2 publication Critical patent/JP5166609B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/39Credit based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)
  • Oscillators With Electromechanical Resonators (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)

Description

本発明はデジタルシステムに関し、より詳細にはデジタルシステムにおいてインタフェースに関するクレジット方式のフロー制御メカニズムの管理を認めることに関するものである。
デジタルシステムには、システムにおける集積回路(IC)間、システム間、時には一つのIC内においてでさえも、フロー制御インタフェースを含んでいることがよくある。一般的に、フロー制御はバッファのオーバーランや、受信機に生じるデータ状況の他の損失を避けるために存在する。例えば、通常のフロー制御メカニズムはクレジット方式に基づいている。インタフェース上の受信機は、様々なタイプの送信信号に利用可能なクレジットの数をブロードキャストし、そして送信機はこれらのクレジットを記録する。次に、送信機は各送信信号のためにクレジットを保有してインタフェースで送信することができる。クレジットを使いきってしまうと、送信機は送信を中止しなければならない。受信機は、受信した送信処理を完了するとき、各送信で消費してしまったクレジットを解放し、この解放されたクレジットを送信機に戻す。
受信機によって通知されたクレジットは、伝送をハンドリングする受信機で利用可能なリソースにより制限されているのが一般的である。例えば、受信された送信信号を記憶するためにバッファが用意されることが多い。利用可能なバッファは、各送信タイプのためにどのくらいの数のクレジットが通知されるかを示していることになる。或るケースでは、バッファはメモリとして実装される。このメモリがクレジットと同じ(又はより細かい)粒度、すなわち粗さで配置されていなければ、メモリの使用は非効率的になる。一般的に、フルメモリ粒度が割り当てられ、任意のデータ量を最大このフルメモリ粒度で記憶しなければならない。データはメモリの粒度よりも少なく(又は或る非整数の複数メモリ粒度で)送信されるので、通知されうるクレジットの数というのはメモリサイズの知識に基づき推測できる数よりも少ない。その結果、インタフェース上で実現可能なバンド幅は、メモリがより大きな粒度で割り当てられるであろう可能性よりも小さくなってしまっていた。
一実施例において、装置はバッファメモリに結合された受信機を含む。この受信機は、使用の最中に当該受信機に結合されたインタフェースの関するフロー制御クレジットを管理するクレジット管理ユニットを含む。インタフェースで受信される各パケットは、パケットヘッダーを含み、オプションでパケットデータも含む。パケットデータは、当該パケットデータのサイズに依存するフロー制御クレジットにおけるデータクレジットの単位で測定される。ここで、各データは固定のデータバイト数をあらわしている。バッファメモリはパケットヘッダーと、受信機がインタフェース上で受信するパケットに対応するパケットデータを記憶する。この場合、バッファメモリは、データクレジットのサイズにN(Nは1よりも大きな整数)を乗じたバッファユニットにおいて受信機によって割り当て可能である。データクレジットの総数は、パケットデータを記憶するのに利用できるバッファメモリにおいて、バッファユニットの数にNを乗じた値に等しい。そしてクレジット管理ユニットは、パケットデータがバッファユニットをあふれさせず、更に処理中に同時に存在することが認められるパケット数に基づく場合に、使用できないデータクレジットの最大数に基づき複数の総データクレジットをとっておくように構成されている。クレジット管理ユニットは、使用できないデータクレジットの最大数よりも少ないこととなる所与のパケットに関するパケットデータを受信することに応答し、1以上のデータクレジットを解放するように構成されている。クレジット管理ユニットは、所与のパケットが消費される前に1以上のデータクレジットを解放するよう構成されている。上記装置に対応する方法も考慮されるものである。
一実施例において、装置はバッファメモリに結合された受信機を含む。この受信機は、受信機の使用中に結合されるインタフェースに関するフロー管理クレジットを管理するよう構成されたクレジット管理ユニットを含む。インタフェースで受信される各パケットはヘッダーを含み、オプションとしてデータも含む。ヘッダーはインタフェース上でフロー制御のための1以上のヘッダークレジットの単位で測定され、データは当該インタフェース上でフロー制御のための1以上のデータクレジットの単位で測定される。各データクレジットは固定のデータバイト数をあらわす。バッファメモリは、受信機によってインタフェース上で受信されたパケットに対応するパケットヘッダー及びパケットデータを記憶するように構成されている。クレジット管理ユニットは、パケットヘッダーを記憶するために使用される第1の量のバッファメモリ、及び1以上の受信パケットにおけるパケットデータのサイズに応じたパケットデータを記憶するために使用される第2の量のバッファメモリをダイナミックに調整するよう構成されている。クレジット管理ユニットは、上記ダイナミック調整に合わせて、送信機に対してデータクレジット及びヘッダークレジットをインタフェース上で解放するよう構成されている。
本発明は、様々な修正及び代替の態様を受け入れる余地がありながら、その特定の実施例が図面において一例として示されており、ここに詳細に説明されている。しかしながら、図及び詳細な説明は開示された特別の態様として本発明を限定するように意図されておらず、これに対して本発明は、添付の特許請求の範囲によって定義される本発明の精神及び範囲を逸脱しないあらゆる修正、均等物、及び代替例をカバーするものである。ここで使用される見出しは、体系化の目的のみ意図されており、記載の範囲を制限するために使用されことを意図していない。本願全体を通じて使用される単語の「may」は、義務の意味(すなわち、「しなければならない」という意味)というよりは、許容の意味(すなわち、可能性があるという意味)で使用されている。同様に、「含む(include)」、「含んでいる(including)」、「含む(includes)」は、限定されるわけではないという意味の「含む」である。
以下の詳細な説明は添付の図面を参照しながら行なわれる。
図1は、デジタルシステムの一実施例のためのブロック図である。 図2は、メモリバッファ割り当ての一実施例のためのブロック図である。 図3は、図1で示した受信機の一実施例のためのブロック図である。 図4は、図1で示したシステムの初期設定中、図3で示した受信機の一実施例のオペレーションをあらわすフローチャートである。 図5は、図1で示したシステムのパケットを受信することに応じて、図3で示した受信機の一実施例のオペレーションをあらわすフローチャートである。 図6は、図1で示したシステムのターゲットにより消費されるパケットに応じて、図3で示した受信機の一実施例のオペレーションをあらわすフローチャートである。 図7は、図1で示した受信機の別の実施例のためのブロック図である。 図8は、図1で示したシステムの初期設定中、図7で示した受信機の一実施例の追加的オペレーションをあらわすフローチャートである。 図9は、図1で示したシステムのパケットを受信することに応じて、図7で示した受信機の一実施例の追加的オペレーションをあらわすフローチャートである。 図10は、図7で示した受信機の一実施例の追加的な詳細をあらわす擬似コードである。 図11は、図7で示した受信機の一実施例の追加的な詳細をあらわす擬似コードである。
図1を参照すれば、システム10の一実施例のブロック図が示されている。本実施例の場合、システム10は、送信機12、受信機14、バッファメモリ16、そしてオプションとしてパケットターゲット18を含む。送信機は、受信機14も接続されたインタフェース20に接続されている。バッファメモリ16は、受信機14及び当該18に接続されている。
送信機12はヘッダークレジット及びデータクレジットを保持するよう構成され、どのくらいの数のパケットヘッダー及びパケットデータトラフィックを、受信機14が現在のところ受け入れることができるのかを示す。例えば、図1において、送信機12は、ヘッダークレジットレジスタ22及びデータクレジットレジスタ24を含む。システム10の初期化中、そして可能性としてはインタフェース20がリセットされるオペレーション中の他の時点で、受信機14は、送信機12に対して通知するために、ヘッダークレジット及びデータクレジットの数を決定する。送信機12は通知されたクレジットでレジスタ22及び24を初期化することができる。送信機12はパケットヘッダー及びパケットデータを送信するので、送信機12は、送信されたヘッダー及びデータにより消費されたクレジットを保有する。受信機14は、解放後のクレジットを送信機12に返信し、送信機12は解放後のクレジットをレジスタ22及び24に加える。その結果、所与の任意の時点で、送信機12は、レジスタ22及び24内のクレジットに応じて、どのくらい多い情報がインタフェース20を介して送信されたかをコントロールすることができる。仮に、送信のためにあまり十分でないクレジットしか利用されないのであれば、例えば、送信機12は必要とされるクレジット数が利用できるようになるまでその送信を遅延させることができる。
一般的に、通知クレジットは、利用可能なクレジット数を送信機12に知らせるために、受信機14のメカニズムを参照する。同様に、解放クレジットは、送信機12に返信されるのに利用可能な相互接続器20の伝送経由で消費されるクレジットを決定するメカニズム、そしてそれらのクレジットを返信するメカニズムを参照する。この通知及び解放を実行するメカニズムは、インタフェース20の定義に基づく特有の実装(インプリメンテーション)であるが、一般的に受信機14から送信機12までのインタフェース20上での伝送を含むものである。例えば、解放クレジットを送信するパケットが定義されたり、すべてのパケットのために用いられるヘッダーのフィールドが解放クレジットを含むことができる。解放クレジットを送信するパケットは初期化中に送信され、所望の数のクレジットを通知する。パケットのフィールドに送信され得る以上に多くのクレジットが通知される場合には、複合パケットが送信され得る。
一般的に、インタフェース20で送信されるパケットは、(パケットのタイプを定義し、他のコントロール情報を提供する)ヘッダーを含み、そしてオプション的にデータ(すなわち、「ぺイロード」)を含む。このヘッダーはサイズが固定されており、したがって各ヘッダーは、送信機12により送信されるとき、1つのヘッダークレジットを消費する。他の実施例では、可変サイズのヘッダーが実装され、所与のパケットにとって必要なヘッダークレジットの数がそのヘッダーサイズに影響される。データペイロードは、可変サイズである。したがって、データクレジットは、固定数のデータバイト(「データ単位」として引用される。)をあらわすように定義され、所与のパケットにとって要求されるデータクレジットの数は、ペイロードのサイズをデータクレジットのサイズで割った値となる。データクレジットのサイズはインタフェース20定義の一部である。例えば、一実施例において、インタフェース20は、周辺機器コンポーネント相互接続Express(PCIe)インタフェースであり、データクレジットは16バイトをあらわす。
受信機14はクレジット管理ユニット26を含み、当該クレジット管理ユニット26によって使用される値を記憶し、送信機12に関するクレジットを管理する1以上のクレジットレジスタ28を含む。様々な実施例の補足する詳細については後述する。また、受信機14はインタフェース20で通信するため、バッファメモリ16と通信するため等の様々な他の回路も含む。さらに、図1は、受信機14へ送信する送信機12を示すのであるが、この通信はインタフェース20上で双方向である。つまり、送信機の機能はインタフェース20の両サイドに存在し、受信機の機能もインタフェース20の両サイドに存在するのである。話を簡略化するため、ここでの記載は、受信機14へ送信する送信機12について言及するものであるが、図1の受信機14側から送信機12側へパケットが送信され得ることを理解されたい。
図示した実施例の場合、インタフェース20は、一組の双方向なポイント・ツー・ポイントリンクを含む。パケットはこのリンク上で送信される。他の実施例においては、インタフェース20は他の定義を有する。例えば、インタフェース20は、アドレス及びデータトランスミッションを有するバスとなり得る。アドレストランスミッションは、(ヘッダークレジットに類似する)アドレスクレジットによりフロー制御され、データトランスミッションはデータクレジットによりフロー制御される。インタフェース20の定義に基づき、クレジットの任意のセットが使用される。一般的に、クレジットのセットはフロー制御クレジットとして引用される。
ターゲット18はバッファメモリ16からのパケットを消費する任意の回路を参照するのが一般的である。ターゲット18は受信機14(例えば、IC)を含むデバイスの一部であったり、或いは分離されていたりする。例えば、受信機14は、パケットを受信し、かつ、パケットを別のインタフェースに転送するスイッチである。この場合、バッファメモリ16からのパケットの消費は、他のインタフェース上の転送パケットである。
バッファメモリ16は、受信機14にアクセス可能な任意のタイプのメモリを含む。例えば、バッファメモリ16は、メモリコントローラに接続されたダイナミックランダムアクセスメモリ(DRAM)などのシステムメモリ16を含む。なお、メモリコントローラは、DRAMに対するインタフェースを構成する。例えば、シングル・インライン・メモリ・モジュール(SIMM)、デュアル・インライン・メモリ・モジュール(DIMM)など様々なDRAMはメモリモジュールがサポートされる。任意のDRAM技術が使用される(例えば、同期型DRAM(SDRAM)、デュアル・データ・レート(DDR)SDRAM、DDR2 SDRAM、DDR3 SDRAM、Rambus DRAM(RDRAM)など)。このような実施例において、受信機14はメモリコントローラに対する書込みコマンドを発生させ、パケットヘッダー及びパケットデータをメモリ16に書き込む。ターゲット18はメモリコントローラに対する読み出しコマンドを発生させ、パケットヘッダー及びパケットデータを読み出す。他の実施例においては、バッファメモリ16は、受信機14に対するプライベートメモリを有したり、或いは受信機14及びシステム10内の1以上の他の送受信機によって共有されるメモリを含む。バッファメモリ16は、例えば、キャッシュメモリや他の専用バッファメモリを含む。或る実施例において、バッファメモリ16は、スタティックRAM(SRAM)を含む。
バッファメモリ16は、パケットヘッダー及びパケットデータを記憶するように割り当てられる。詳細には、データクレジット(幾つかの実施例では、さらにヘッダークレジットの少なくともいずれか)よりも粗い粒度でバッファメモリ16を割り当てる。バッファメモリ16は、ここでは、バッファユニット(BU)として引用される、顆粒状態で割り当てられる。したがって、図1において、ヘッダーBU30及びデータBU32が示される。本記載の残りは、BUと同じ粒度のヘッダークレジット及びより細かな粒度のデータクレジットの実施例を使用することとする。しかしながら、BUよりも粒度の細かいヘッダークレジット、及びデータクレジットメカニズムと同様のメカニズムがヘッダークレジットのために用いられる実施例が考慮される。
BU粒度はDU粒度よりも粗いので、バッファメモリ16はデータを記憶するのに十分に用いられないかもしれない。図2は、BUがDUのサイズの4倍である場合の完全利用よりも少ない一例を示したブロック図である。他の実施例は、DUのサイズをN倍したBUを一般的に含む。ここで、Nは1より大きな整数である。或る実施例の場合、Nは2の累乗である。
一般的に、様々なパケットのデータペイロードは、0及びM個のDUの間である。ここで、Mは0よりも大きな整数である。Mのサイズは実装(インプリメンテーション)に影響され、インタフェース20の定義に依存する(例えば、インタフェース20はパケット当りの最大データペイロードサイズを定義する)。しかしながら、Mは、Nとの特別な関係を必ずしも持っていない。つまり、M/Nは所与のパケットに対して整数値である必要はない。
図2の右側にBUが、一例として記憶されたデータペイロードの内部を点線で延長して示されている。左側には、実線でDUを示している。上述したように、本例ではBU当り4個のDUがある。5個のDUペイロードが図2に示されている。最初の4個のDUはBU0に記憶され、BUすべて占領する。5番目のDUはBU1に記憶される。バッファメモリ16は、BU粒度でペイロードデータを記憶するよう割り当てられるので、BU1内で3個のDUを未使用にしたまま、BU1の完全性はペイロード40に割り当てられる。別のやり方を検討すると、ペイロード40に対応するパケットが消費されるまで、バッファメモリ16の3DUは使用できず、そして、ペイロード40を送信するための送信機12により消費されるDU(及び、その結果、データクレジット)の数に関するアカウンティング・エラーを本質的に構成してしまうかもしれない。つまり、送信機12はペイロード40を送信するために5個のクレジットを消費するが、実際にはペイロード40はバッファメモリ16の8個のクレジットを占領する。
別のペイロード42が図2に示されている。これは、一例として4個のDUである。したがって、ペイロード42はBU2に記憶されており、未使用のDUはない。3番目のペイロード44もまた示され、これは、BU3及びBU4の2個のDUを占領する6個のDUである。したがって、バッファメモリ16内の2以上DUが未使用である。一般的に、パケットは最大P個のBUを占領し、ペイロードがNの偶数個のDUでないならば、最後に占領されたBU内の1以上のDUが未使用である。言い換えると、未使用のDUが、(そのペイロードがBUの始めに割り当てられることを要求されないのであれば)ペイロードによって占領されたBUの始め、若しくは始め及び終わりの両方に存在する。いずれにしても、BUに対応するDUの数に基づき、データペイロードに関する最大の起こりうるエラーが定義される。1つのDUがBUを占領する場合は最大エラーが生じ、その結果、所与のペイロードに関する最大エラーがN−1個のDU(又はN−1個のデータクレジット)である。
したがって、パケットデータを記憶するために割り当て可能な所与の数Y個のBUについて、Y*N個よりも少ないデータクレジットが送信機12に通知される。クレジット管理ユニット26は、オーバーフローがバッファメモリ16に生じないことを保証することを通知したであろうデータクレジットを用意しておく。具体的に言うと、各データペイロードが最大エラー(N−1)を負うとき、最悪ケースの総エラーが生じる。最大でCパケットが送信されるならば(例えば、ヘッダークレジットの数がCである)、最悪ケースの全体エラーはC−1×N−1である。最後のデータペイロードのエラーが検出されないのでC−1が用いられる。というのも、送信機12はヘッダークレジットが使い果たされたとき別のパケットを送信することができないからである。
データペイロードを有する所与のパケットが受信されるとき、ペイロードが最大エラーよりも少ない量を負うのであれば、幾つかのデータクレジットは、(パケットが消費される前)ただちに解放される。つまり、クレジット管理ユニット26が送信機12に対してブロードキャストされていなかったということを、保有されていたクレジットが明らかにした量よりも、データペイロードに関するバッファメモリ16内の未使用のDUは少ない。例えば、図2において、ペイロード42はゼロエラーを認識し、その結果、3(N−1−0)のデータクレジットがペイロード42を受信することに応じて解放される。ペイロード44は2エラーを認識し、その結果、1(N−1−2)のデータクレジットがペイロード42を受信することに応じて解放される。
ひとたびパケットが消費されると、保有されていたクレジットが再び必要とされる(なぜなら、受信される次のパケットは未使用のDUの最大数を実現するペイロードを有するからである)。したがって、送信機によって実際に消費された残りのクレジットは、パケットが消費されるときに解放される。つまり、パケットが消費されるときに解放されるクレジットの数は、ペイロードに対応する実際のクレジット数から、パケットが受信されたときに解放されるクレジット数を差し引いた値に等しい。
未認識のエラーに対応したクレジットを解放することによって、利用可能なデータクレジットの欠如のために遅延したであろう追加パケットを送信できる可能性がある。つまり、インタフェース20上のバンド幅はより効率的に利用されるのである。
図3は、受信機14の一実施例を示すブロック図であり、未使用DUの最大数よりも少ない未使用DUを負担するデータペイロードに関するデータクレジットの早期解放のインプリメントを詳細に示している。本実施例の場合、クレジット管理ユニット26が示され、最大DUエラーレジスタ28A及び解放データクレジット(DCrs)レジスタ28Bに結合されている。レジスタ28A-28Bは、図1に示したクレジットレジスタ28の一部である。また、図3に示したデータクレジットFIFO28Cは、1以上のクレジットレジスタ28又はFIFOメモリ若しくは他のメモリとしてインプリメントされている。或いはまた、データクレジットFIFO28Cはインプリメントされず、そのかわりに、そこに記憶されたデータが受信パケットにより(例えば、バッファメモリ16内に)キューされる。
クレジット管理ユニット26は、未使用DUの最大数を参照し、様々な点で解放されるクレジットを計算する。最大DUエラーレジスタ28Aはこの値を記憶する。クレジット管理ユニット26が上記値を生成するか、若しくは上記値がソフトウェアによってレジスタ28A内にプログラム化されるかの何れかである。或る実施例では、DU及びBUの両方が固定され、かつ、クレジット管理ユニット26内にきっちりコード化される。そして、レジスタ28Aは除外される。
一実施例において、クレジット管理ユニット26は解放クレジットを蓄積し、これを解放データクレジットレジスタ28B内の送信機12へ送信する。クレジット管理ユニット26は、解放クレジットを送信するときを決定する任意のメカニズムを使用する。例えば、解放クレジットの最後の送信や、経過時間及び解放クレジットの数の組み合わせなどがあってから或る期間の時間が経過した後、或る数のクレジットが蓄積されたら(例えば、プログラム化された閾値を超えるなど)解放クレジットを送信する。同様のレジスタが解放ヘッダークレジットを蓄積するのに用いられたり、又は同じレジスタ内のフィールドが使用されたりする。
データクレジットFIFO28Cは、バッファメモリ16に記憶される各パケットに関するデータクレジットの数(#DCrs)を記憶する。パケットはバッファメモリから消費されるので、データクレジットの対応する数はデータクレジットFIFO28Cから読み出され、そして解放される。クレジット管理ユニット26は、パケットを送信するのに消費したデータクレジット総数、及び当該パケットを受信することに応じて解放したデータクレジットの数に基づき、各受信したパケットのデータクレジット数を計算する。
図4は、システム10の初期化中に受信機14の一実施例におけるオペレーションを示すフローチャートである。理解を容易にする目的でブロック図は特定の順序で示したが、他の順序も用いられ得る。ブロックは、受信機14内のロジックを並列に、組み合わせて実行することができる。ブロック、ブロックの組み合わせ、フローチャートの少なくとも1つは、全体としてマルチ・クロック・サイクル上でパイプライン化され得る。
クレジット管理ユニット26は、受信機12に通知されるはずのヘッダークレジットの数(header_credits)及びバッファユニット(N)当りのデータユニットの数に基づき、総ポテンシャル・データユニット・エラー(DU_Err)を決定する。詳しく言うと、DU_Errは、(N-1)*(header_credits−1)によって与えられる(ブロック50)。クレジット管理ユニット26は、データユニット(データクレジット)の数を決定し、送信機12に通知する(DU_Adv)。つまり、DU_Advは、バッファメモリ16におけるデータユニットの総数(N*パケットデータを記憶するために割り当てられたバッファユニット数)−ブロック50で決定されたDU_Errとして計算される(ブロック52)。効率的には、DU_Errはバッファメモリ16内のバッファユニットで生じ得る未使用のデータユニットを扱うために保有されていたデータクレジットの数である。クレジット管理ユニット26は、ヘッダークレジット及びデータクレジットのためのDU_Advを通知する(ブロック54)。くわえて、クレジット管理ユニット26は、レジスタ28A内のMax_DU_ErrをN−1にセットし、そしてまた、レジスタ28B内の解放データクレジットをゼロに初期化する(ブロック56)。
図5は、インタフェース20上でパケットを受信することに応じた受信機14のオペレーションの一例を示すフローチャートである。理解を容易にする目的でブロック図は特定の順序で示したが、他の順序も用いられ得る。ブロックは、受信機14内のロジックを並列に、組み合わせて実行することができる。ブロック、ブロックの組み合わせ、フローチャートの少なくとも1つは、全体としてマルチ・クロック・サイクル上でパイプライン化され得る。
クレジット管理ユニット26は、ペイロードにおいて認識されたデータエラー(すなわち、ペイロードデータを記憶するバッファユニットで未使用なデータユニットの数)を決定する(ブロック60)。クレジット管理ユニット26は、未認識のデータエラーがMax_DU_Errから認識されたデータエラーを差し引いた値に等しいことを決定する(ブロック62)。未認識のデータエラーは、パケットを受信すると解放されるデータクレジットの数である。クレジット管理ユニット26は、解放データクレジットレジスタ28B内の解放データクレジットに対して未認識のデータエラーを追加する(ブロック64)。さらに、パケットがデータクレジットFIFO28C内のバッファメモリ16から消費されるとき、クレジット管理ユニット26は解放されるはずのデータクレジット数を記憶する(ブロック66)。詳しく言うと、FIFOに書き込まれた数は、ペイロードから未認識のデータエラーを差し引いた値に対応する実際のデータクレジット数である。
図6はバッファメモリ16から消費されるパケットに応じた受信機14のオペレーションの一例を示すフローチャートである。一般的に、ターゲット18によってバッファメモリ16から読み出されるとき、そうでなければパケットがバッファメモリ16にもはや記憶する必要がないとき(例えば、パケットが落ち込んだ等)、パケット消費される。理解を容易にする目的でブロック図は特定の順序で示したが、他の順序も用いられ得る。ブロックは、受信機14内のロジックを並列に、組み合わせて実行することができる。ブロック、ブロックの組み合わせ、フローチャートの少なくとも1つは、全体としてマルチ・クロック・サイクル上でパイプライン化され得る。
クレジット管理ユニット26は、データクレジットFIFO28C内のエントリーからデータクレジット数を読み出し、そのデータクレジット数をレジスタ28B内の解放データクレジットに追加する。その結果、データクレジットを解放する(ブロック70及び72)。一実施例において、パケットは受信した順序で消費され、そしてデータクレジット数はFIFOのヘッダーから読み出される。パケットが異なる順序で消費される場合、所望のエントリーに対してFIFOへのオフセットが提供される。
図4〜6は、各ペイロードについて取っておいた最大数と比較したとき、バッファユニット内の未使用のデータクレジットの実際の数に基づき、データクレジットの早期の解放に関連するオペレーションを示していることに留意されたい。受信機14及びクレジット管理ユニット26の少なくとも何れかは、各ポイントにおいて上述したものと同様の追加のオペレーションを含む。
受信機14の別の実施例は、上述したデータクレジットの早期解放に加えて又は代わりに、適合クレジット管理を実行するする。適合クレジット管理により、受信機14はヘッダーに割り当てられるバッファメモリ16に、及びインタフェース20に実際に受信されるトラフィックへのデータに割り当てられるバッファメモリ16に一致することを試みる。つまり、データペイロードのサイズが増大するとき、多くのデータクレジット及び少ないヘッダークレジットがインタフェースバンド幅のより効率的な使用を認める。(というのも、各パケットは依然として1つのヘッダークレジットを要求するが、ペイロードについてはマルチのデータクレジットであるからである)。データペイロードのサイズが増大するので、少ないデータクレジット及び多くのヘッダークレジットを持つことはインタフェースのバンド幅の効率的な使用を求めることになる(というのも、各パケットの要求されたデータクレジットに対する、要求されたヘッダークレジットの比率は増加しているからである)。
したがって、クレジット管理ユニット26は、受信機14により受信されたデータペイロードのサイズをモニタし、ヘッダーに割り当てられたバッファメモリ(例えば、ヘッダーのバッファユニット30のサイズ)の量及びデータペイロードに割り当てられたバッファメモリ(例えば、データのバッファユニット32のサイズ)の量をダイナミックに修正する。或いはまた、ヘッダーに割り当てられたメモリの量は、所望のヘッダー最大数に対応するのに十分な大きさであるが、クレジットは送信機が利用可能なヘッダークレジットの数及びデータクレジットの数を増減するように管理される。このようなダイナミックなクレジット管理は、バッファメモリ16のより効率的な使用を許可することでもある。なぜなら、上述したとおり、ヘッダークレジットの数はバッファユニットにおける未使用のデータユニットに基づき留保されるべきデータクレジットの数に影響を及ぼすからである。
一実施例において、ペイロードの期待したサイズの真ん中に、適当なデータペイロードをもつパケットに関して、ヘッダー及びデータクレジット(及び対応するバッファメモリ割り当て)を初期化する。例えば、一実施例において、インタフェース20は、PCIeインタフェースであり、データペイロードのサイズは0と256バイトの間にあり、クレジットは128バイトペイロードに関して初期化される。次に、オペレーションで経験されたペイロードの実際のサイズに応答してダイナミックな調整が実行される。
図7は、上述したデータクレジットの早期解放と共に、ダイナミックなクレジット管理の一実施例を行うための詳細に関する受信機14の一実施形態を表したブロック図である。図7の実施例は、上述したレジスタ28A、28B、及びFIFO28Cを含む。さらに、解放ヘッダークレジット(HCre)レジスタ28D、最大外部ヘッダークレジット(MaxExHead)レジスタ28E、最大再呼び出しヘッダークレジット(MaxRecHead)レジスタ28F、ペンディングヘッダークレジット(PendHeadCr)レジスタ28G、ペンディングデータクレジット(PendDataCr)レジスタ28H、認識データクレジット(RlzdDataCr)レジスタ28I、及び認識ヘッダークレジット(RlzdHeadCr)レジスタ28Jを含み、図7に示すクレジット管理ユニット26にすべて結合される。
解放ヘッダークレジット(HCre)レジスタ28Dはレジスタ28Bに類似するが、解放ヘッダークレジットを蓄積する。或いはまた、上述したとおり、解放ヘッダークレジット及び解放データクレジットは、所望であれば同一レジスタの2つのフィールドに蓄積される。MaxExHead及びMaxRecHeadレジスタ28E−28Fは、ダイナミックなクレジット管理に制限される。これらのクレジットは後述するとおり、クレジット管理ユニット26によって自動的にセットされたり、又は所望であればソフトウェアによってプログラムされる。詳しく言うと、データクレジットを差し控えることにより割り当てられる追加のヘッダークレジットの最大数は、MaxExHeadレジスタ28Eにより示される。追加のヘッダークレジットを解放するために差し控えられるヘッダークレジットの最大数は、MaxRecHeadレジスタ28Fにより示される。
ペンディングヘッダークレジット及びペンディングデータクレジットレジスタ28G−28Hは、計画されたヘッダー及びデータクレジット調整と、その計画された調整を満たすために要求された解放ヘッダー又はデータクレジットとを蓄積する。これらの蓄積は、ダイナミック調整が生じる際に実行され、そのダイナミック調整において扱われないクレジットをキャプチャーする。例えば、一実施例において、ヘッダークレジットの増加が3つのデータクレジットの減少を要求するとする。3つのデータクレジットがまだ使用可能でない場合、レジスタ28Hに使用可能なデータクレジットが蓄積される。ペンディングヘッダー及びデータクレジットは、その後の解放クレジットを介して取得される必要なクレジットのキャプチャーを許可する値が送られる。認識されたデータクレジット及びヘッダークレジットレジスタ28I−28Jは、送信後の認識されたヘッダークレジット調整及びデータクレジット調整を記憶する。
図8を参照すると、適合クレジット管理を実行するシステム10の初期化中、受信機14の一実施例のオペレーションを例示する高レベルのフローチャートが示されている。データクレジットの早期解放を実行する実施例ということから、図8のオペレーションは、図4のオペレーションに追加されるものである。理解を容易にする目的で特定の順序にあるブロックが示されているが、他の順序も用いられ得る。ブロックは、受信機14内のロジックを並列に、組み合わせて実行することができる。ブロック、ブロックの組み合わせ、フローチャートの少なくとも1つは、全体としてマルチ・クロック・サイクル上でパイプライン化され得る。
クレジット管理ユニット26は、MaxExHeadレジスタ28Aを、許可された最大ヘッダー数(#CMD)から中間サイズパケット(header_credits)のために割り当てられたヘッダークレジット数を差し引いた値に初期化する。許可された最大ヘッダー数(#CMD)は、ハードウェアの最大数であったり、或いはヘッダーのバッファユニット30の割り当てに基づくソフトウェアによりプログラムされていてもよい。ヘッダークレジットの数は、例えば、データバッファユニットの数を中間サイズパケットの2で除算した値に等しいこともある。したがって、追加のヘッダークレジットの最大数は、ヘッダーのバッファユニットで割り当てられなかった残りのスペースであり得る(ブロック80)。リコールされたヘッダークレジットの最大数(追加のデータクレジットを許可するためにダイナミックに除去されるヘッダークレジット-MaxRecHead)は、現在ヘッダークレジットの1/2、又は、バッファメッセージ16内のデータバッファユニットの総数を4で割った数の整数値をヘッダークレジットから差し引いた数の小さい方として初期化される(ブロック82)。ヘッダークレジット数の1/2は、最大パケットに関する合理的な数であるとして選択されるものである。4で割られたデータバッファユニットの数は、本実施例に関しては最小である。なぜなら、最大のデータペイロードが4バッファユニットであるからである。一実施例において、ヘッダークレジットの初期数が2以下の場合、最大リコールヘッダークレジットはゼロに設定されることに留意されたい。2又は1つのヘッダークレジットのとき、ヘッダークレジットを削減することによって得られる利益は何もない。というのは、ヘッダークレジットの不足は追加データクレジットを使用することを回避するからである。クレジット管理ユニット26は、ヘッダークレジットの数及びデータユニットの通知データクレジット(DU_Advデータクレジット)を通知する(ブロック84)。
図9を参照すると、パケットを受信することに反応した受信機14の一実施例のオペレーションを例示する高レベルのフローチャートが示されている。データクレジットの早期解放を実行する実施例ということから、図9のオペレーションは、図5のオペレーションに追加されるものである。理解を容易にする目的で特定の順序にあるブロックが示されているが、他の順序も用いられ得る。ブロックは、受信機14内のロジックを並列に、組み合わせて実行することができる。ブロック、ブロックの組み合わせ、フローチャートの少なくとも1つは、全体としてマルチ・クロック・サイクル上でパイプライン化され得る。
一般的に、クレジット管理ユニット26は、データペイロードのサイズに基づき4カテゴリーの1つにパケットを分類し、そしてそのカテゴリーに従いクレジットを調整する。その結果、本実施例では、各受信パケットに基づく調整を行なう。他の実施例では、所望であれば、調整をするために2以上のパケットにわたるパケットサイズのモニタリングを行う。
パケットがデータペイロード処理を含まない場合(判断ブロック90で、「yes」)、そのパケットはCat0パケットであり、どんな調整も行なわれない。パケットが中間サイズのパケットデータペイロードの1/2以下(例えば、上述したPCIe実施例における64バイト)であれば(判断ブロック92で、「yes」)、そのパケットはCat1パケットである。データペイロードはCat1パケットよりも相当に小さく、その結果、データクレジットを削減すること及びヘッダークレジットを増加することは、インタフェースのバンド幅使用を良くすることにつながる(ブロック94)。パケットが中間サイズのパケットの0.5〜1.5倍の間にあるデータペイロードを含む場合(判断ブロック96で、「yes」)、パケットはCat2パケットである。Cat2において、パケットデータペイロードは、ほぼ中間サイズである。Cat2サイズのレンジの場合、初期のヘッダー及びデータクレジットはほぼ正しい。ペンディング及び認識されたクレジットがゼロでない場合、クレジット管理ユニットは最新の調整とは反対の方向にクレジットを調整する(ブロック98)。つまり、最新の調整がヘッダークレジットを増加し、データクレジットを減少させるためであった場合、クレジット管理ユニットはデータクレジットを増加させ、ヘッダークレジットを減少させる。これに対して、最新の調整がヘッダークレジットを減少させ、データクレジットを増加させるためであった場合、クレジット管理ユニットはデータクレジットを減少させ、ヘッダークレジットを増加させる。最後に、データペイロードが大(中間パケットの1.5倍以上、判断ブロック96で、「no」)ならば、そのパケットはCat3パケットである。大きなペイロード(Cat3)パケットは、多くのデータクレジット及び少ないヘッダークレジットからの利益を享受し、その結果、クレジット管理ユニット26はヘッダークレジットを減少させ、データクレジットを増加させる(ブロック100)。
MaxHeadCr及びMaxRecHeadレジスタ28F−28Gがダイナミッククレジット調整に限界を与えるために使用される場合、図9のオペレーションは制限を受けることになることに留意すべきである(例えば、その調整がMaxHeadCr及びMaxRecHeadレジスタ28F−28Gによってセットされた限界に違反しているならば、クレジットは図示したように調整されない。)。
図10及び11は、一実施例に関し、図9のオペレーションを詳細に示す擬似コードをあらわす。図7に示したレジスタ名はこの擬似コードで示されている。さらに、擬似コードを簡便にするため、ヘッダークレジット及びデータクレジットに関するベクトル化された注釈が使用される。詳細には、adaptive_creditsは、{adaptive_header_credits, adaptive_data_credits}として定義され、pending_creditsは、{PendHeadCr, PendDataCr}として定義される。adaptive_creditsは、(将来的に調整の可能性がある)ヘッダークレジット及びデータクレジットである。解放ヘッダークレジット(releasing_header_credits)及び解放データクレジット(releasing_data_credits)は、現在、解放されているクレジットである。解放データクレジット(releasing_data_credits)は、上述したように、データエラーが所与のパケットに関する最大エラーよりも少ないとき、早期に解放されるデータクレジットを含む。また、解放ヘッダークレジット(releasing_header_credits)及び解放データクレジット(releasing_data_credits)の変数は、バッファメモリ16からのパケット消費を理由に解放されたクレジットを含む。
図10は、適合クレジットの生成を示す。一般的に、限界に達したならば、適合クレジットはペンディングクレジットに等しい。そうでなければ、適合クレジットは、受信パケットのカテゴリーに依存する(及びCat2パケットのケースでは最新の調整に依存する)クレジットを、ペンディングクレジットに増減することを含む。本実施例の場合、最新の調整は、ペンディングヘッダークレジット及び認識されたヘッダークレジットの総和をとって、それをゼロと比較することによって検出される。
図10にみられるとおり、本実施例の場合、1つのヘッダークレジットが3つのデータクレジットに等しい。それゆえ、ヘッダークレジットを1つ増やすことは、データクレジットを3つ減らすことである。逆も同じである。他の実施例では、N−1に基づき、データクレジットに対する異なる比率のヘッダークレジットを有する。
最後に、図10において、中間値であるremaining_pemding_dが計算される。このremaining_pemding_dは、0以下であり、且つ3より小さくするべきである。一実施例において、PendHeadCrが負であれば、remaining_pemding_dは0である。
図11は、図10で決定された適合クレジット及び解放クレジット(releasing credits)に基づく認識されたクレジットの計算を示す。繰り返しになるが、図11の例は1つのヘッダークレジットに等しい3つのデータクレジットに基づくものである。それは、任意の所与の時点で調子をあわせてペンディングされる1又は2のデータクレジットを許可する。最後に、レジスタ28B、28D、及び28G−28Jの更新が図11に示されている。ここで、“+=”は、等号の記号の右側の値で、レジスタの現在値を増加させることをあらわし、“−=”は、等号の記号の右側の値で、レジスタの現在値を減少させることをあらわしている。
上述した開示が完全に理解されることによって、多数の変形例及び修正例が当業者によって明らかになるであろう。特許請求の範囲は、これらの変形例及び修正例のすべてを包含するように解釈されることを意図している。

Claims (10)

  1. クレジット管理ユニットを含む受信機と、前記受信機に結合されたバッファメモリとを備えた装置であって、
    前記受信機の使用中に前記受信機と結合するインタフェースに関する前記フロー制御クレジットを管理し、前記インタフェースで受信される各パケットは、パケットヘッダー及びオプションとしてのパケットデータを含み、前記パケットデータはそのパケットデータのサイズに応じたフロー制御クレジットにおけるデータクレジットとして数えられ、前記各データクレジットは固定されたデータバイト数をあらわし、さらに、前記バッファメモリには、前記受信機によって前記インタフェースで受信されるパケットに対応するパケットヘッダー及びパケットデータが記憶され、
    前記受信機は、前記データクレジットのサイズをN倍(Nは1より大きな整数)したバッファユニットに前記バッファメモリを割り当て、ここで、データクレジットの総数はパケットデータを記憶するために使用可能なバッファメモリにおけるバッファユニット数をN倍した値に等しく、
    パケットデータが、バッファユニットをあふれさせず、且つ同時伝送されるパケット数に基づいている場合、前記クレジット管理ユニットは、使用できない最大データクレジット数に基づいて複数のデータクレジットを保有しておき、
    前記クレジット管理ユニットは、使用できないデータクレジットの最大数よりも少ない数の所与のパケットに対するパケットデータを受信することにあわせて、且つ、前記バッファメモリから前記所与のパケットが消費される前に、1以上のデータクレジットを解放する、
    ことを特徴とする前記装置。
  2. 前記クレジット管理ユニットは、前記所与のパケットの消費にあわせて追加する複数のデータクレジットを解放するものであって、前記複数のデータクレジットの数は、前記所与のパケットのパケットデータから、前記所与のパケットを受信したことにあわせて解放された1以上のデータクレジットを差し引いた数に対応するデータクレジット数に等しい、請求項1に記載の装置。
  3. 前記受信機は、前記装置の初期化中、送信機に対してデータクレジット数を前記インタフェース上で通知し、前記通知されたデータクレジット数は、データクレジットの総数から前記保有されたデータクレジットを差し引いた数よりも大きくない値である、請求項1に記載の装置。
  4. 所与のパケットに対して使用できない最大データクレジット数はN−1に等しい、請求項1に記載の装置。
  5. 前記クレジット管理ユニットは、パケットヘッダーを記憶するのに使用される第1の量のバッファメモリと、受信したパケットに含まれるパケットデータのサイズをモニタリングすることにあわせてパケットデータを記憶するのに使用される第2の量のバッファメモリをダイナミックに調整する、請求項1に記載の装置。
  6. パケットデータのサイズに基づき、インタフェース上の送信機で1以上のデータクレジットを消費する前記パケットデータを含むパケットを、前記インタフェースから受信する処理と、
    前記パケットデータをバッファメモリに記憶する処理であって、前記バッファメモリは前記データクレジットのサイズをN倍(Nは1より大きな整数)したバッファユニット内にパケットデータを記憶するよう割り当て可能であり、最大でN−1個のデータクレジットをパケットデータに応じて使用できないようにして前記パケットデータを記憶するために割り当てられたバッファユニットをあふれさせない当該処理と、
    前記パケットデータを受信することにあわせて及び前記バッファメモリから前記パケットが消費される前に、前記パケットデータがN−1個の使用できないデータクレジットよりも少ない負担であることを決定し、当該決定に応じて使用できない1以上のデータクレジットを解放する処理と、
    を含む方法。
  7. すべてのデータクレジットから1以上のデータクレジットを保有する処理を更に含み、
    データクレジットの総数はパケットデータを記憶するために使用可能なバッファメモリ内のバッファユニット数をN倍した値に等しく、
    パケットデータが、バッファユニットをあふれさせず、且つ同時に処理されることが許可されたパケット数に基づいている場合、前記複数のデータクレジットの数は、使用できないN−1個のデータクレジットに基づくことを特徴とする請求項6に記載の方法。
  8. 初期化中、送信機に対してデータクレジット数を前記インタフェース上で通知する処理を更に含み、前記通知されたデータクレジット数は、データクレジットの総数から前記保有されたデータクレジットを差し引いた数よりも大きくない値である、請求項7に記載の方法。
  9. 前記パケットの消費に応じて追加するデータクレジットを解放する処理を更に含み、
    前記追加するデータクレジットの数は、前記所与のパケットのパケットデータから、前記所与のパケットを受信したことにあわせて解放された1以上のデータクレジットを差し引いた値に対応するデータクレジット数に等しい、請求項6に記載の方法。
  10. 前記解放されたデータクレジットの知らせを送信機に送信することを更に含む、請求項6に記載の方法。
JP2011543552A 2008-12-29 2009-12-09 リソースの粒度がクレジットの粒度よりも大きいときのクレジット管理 Active JP5166609B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/344,949 US8045472B2 (en) 2008-12-29 2008-12-29 Credit management when resource granularity is larger than credit granularity
US12/344,949 2008-12-29
PCT/US2009/067360 WO2010077747A1 (en) 2008-12-29 2009-12-09 Credit management when resource granularity is larger than credit granularity

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2011239929A Division JP5221736B2 (ja) 2008-12-29 2011-11-01 リソースの粒度がクレジットの粒度よりも大きいときのクレジット管理

Publications (2)

Publication Number Publication Date
JP2012514384A JP2012514384A (ja) 2012-06-21
JP5166609B2 true JP5166609B2 (ja) 2013-03-21

Family

ID=41666515

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2011543552A Active JP5166609B2 (ja) 2008-12-29 2009-12-09 リソースの粒度がクレジットの粒度よりも大きいときのクレジット管理
JP2011239929A Active JP5221736B2 (ja) 2008-12-29 2011-11-01 リソースの粒度がクレジットの粒度よりも大きいときのクレジット管理

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2011239929A Active JP5221736B2 (ja) 2008-12-29 2011-11-01 リソースの粒度がクレジットの粒度よりも大きいときのクレジット管理

Country Status (9)

Country Link
US (2) US8045472B2 (ja)
EP (2) EP2271994B1 (ja)
JP (2) JP5166609B2 (ja)
KR (2) KR101110384B1 (ja)
CN (2) CN102298563B (ja)
AT (1) ATE534083T1 (ja)
ES (2) ES2414936T3 (ja)
HK (2) HK1164486A1 (ja)
WO (1) WO2010077747A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8045472B2 (en) * 2008-12-29 2011-10-25 Apple Inc. Credit management when resource granularity is larger than credit granularity
US20100296520A1 (en) * 2009-05-19 2010-11-25 Matthews David L Dynamic quality of service adjustment across a switching fabric
JP5349515B2 (ja) * 2011-03-14 2013-11-20 株式会社東芝 バッファ管理装置、バッファ管理方法及び記憶装置
JP5987560B2 (ja) * 2012-08-31 2016-09-07 富士通株式会社 データ転送装置、データ転送方法およびデータ転送プログラム
US9524261B2 (en) 2012-12-21 2016-12-20 Apple Inc. Credit lookahead mechanism
JP2014230072A (ja) * 2013-05-22 2014-12-08 株式会社リコー データ通信デバイス、データ通信装置及びデータ通信方法
US9178832B2 (en) 2013-07-11 2015-11-03 International Business Machines Corporation Queue credit management
US9082118B2 (en) 2013-07-17 2015-07-14 Apple Inc. Transaction flow control using credit and token management
EP3051870B1 (en) * 2013-09-29 2019-07-03 Huawei Technologies Co., Ltd. Data transmission method and device
US9584429B2 (en) * 2014-07-21 2017-02-28 Mellanox Technologies Ltd. Credit based flow control for long-haul links
KR102429904B1 (ko) * 2017-09-08 2022-08-05 삼성전자주식회사 PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템
US10432536B1 (en) * 2017-12-11 2019-10-01 Xilinx, Inc. Systems and methods for policing streams in a network
US10824369B2 (en) * 2018-07-31 2020-11-03 Nutanix, Inc. Elastic method of remote direct memory access memory advertisement
US10630602B1 (en) 2018-10-08 2020-04-21 EMC IP Holding Company LLC Resource allocation using restore credits
US11005775B2 (en) 2018-10-08 2021-05-11 EMC IP Holding Company LLC Resource allocation using distributed segment processing credits
US11201828B2 (en) 2018-10-08 2021-12-14 EMC IP Holding Company LLC Stream allocation using stream credits
US10951549B2 (en) 2019-03-07 2021-03-16 Mellanox Technologies Tlv Ltd. Reusing switch ports for external buffer network
US11558316B2 (en) 2021-02-15 2023-01-17 Mellanox Technologies, Ltd. Zero-copy buffering of traffic of long-haul links
US11973696B2 (en) 2022-01-31 2024-04-30 Mellanox Technologies, Ltd. Allocation of shared reserve memory to queues in a network device

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781457A (en) 1994-03-08 1998-07-14 Exponential Technology, Inc. Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5832245A (en) * 1996-10-21 1998-11-03 Advanced Micro Devices, Inc. Method for isochronous flow control across an inter-chip bus
US6185630B1 (en) * 1997-02-14 2001-02-06 Advanced Micro Devices, Inc. Device initializing system with programmable array logic configured to cause non-volatile memory to output address and data information to the device in a prescribed sequence
EP0946053A1 (en) * 1998-03-27 1999-09-29 CANAL+ Société Anonyme Memory management in a receiver/decoder
US6636523B1 (en) * 1999-01-27 2003-10-21 Advanced Micro Devices, Inc. Flow control using rules queue monitoring in a network switching system
JP2001094613A (ja) 1999-09-21 2001-04-06 Canon Inc 通信制御装置、方法および記録媒体
US6430684B1 (en) 1999-10-29 2002-08-06 Texas Instruments Incorporated Processor circuits, systems, and methods with efficient granularity shift and/or merge instruction(s)
US7190667B2 (en) * 2001-04-26 2007-03-13 Intel Corporation Link level packet flow control mechanism
US7818356B2 (en) 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US7340495B2 (en) 2001-10-29 2008-03-04 Intel Corporation Superior misaligned memory load and copy using merge hardware
US7269752B2 (en) * 2002-06-04 2007-09-11 Lucent Technologies Inc. Dynamically controlling power consumption within a network node
US6760793B2 (en) 2002-07-29 2004-07-06 Isys Technologies, Inc. Transaction credit control for serial I/O systems
US7725568B2 (en) * 2002-09-09 2010-05-25 Netapp, Inc. Method and apparatus for network storage flow control
US7661130B2 (en) * 2003-04-12 2010-02-09 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processing architecture using multiple queuing mechanisms
JP4366200B2 (ja) * 2004-01-29 2009-11-18 キヤノン株式会社 記録装置及び受信バッファ管理方法
US7752355B2 (en) 2004-04-27 2010-07-06 International Business Machines Corporation Asynchronous packet based dual port link list header and data credit management structure
JP2005332250A (ja) 2004-05-20 2005-12-02 Toshiba Corp データ処理装置およびフロー制御方法
JP2006189937A (ja) 2004-12-28 2006-07-20 Toshiba Corp 受信装置、送受信装置、受信方法及び送受信方法
US7464174B1 (en) * 2005-03-07 2008-12-09 Pericom Semiconductor Corp. Shared network-interface controller (NIC) using advanced switching (AS) turn-pool routing field to select from among multiple contexts for multiple processors
EP1875681A1 (en) 2005-04-13 2008-01-09 Koninklijke Philips Electronics N.V. Electronic device and method for flow control
US7698477B2 (en) * 2005-11-30 2010-04-13 Lsi Corporation Method and apparatus for managing flow control in PCI express transaction layer
US7698478B2 (en) * 2006-09-19 2010-04-13 Apple Inc. Managed credit update
US8139575B2 (en) 2007-06-29 2012-03-20 International Business Machines Corporation Device, system and method of modification of PCI express packet digest
US7869356B2 (en) * 2007-12-18 2011-01-11 Plx Technology, Inc. Dynamic buffer pool in PCIExpress switches
US8151145B2 (en) * 2008-04-03 2012-04-03 Oracle America, Inc. Flow control timeout mechanism to detect PCI-express forward progress blockage
US8045472B2 (en) * 2008-12-29 2011-10-25 Apple Inc. Credit management when resource granularity is larger than credit granularity

Also Published As

Publication number Publication date
US20100165842A1 (en) 2010-07-01
KR20110110340A (ko) 2011-10-06
JP2012039661A (ja) 2012-02-23
EP2390791B1 (en) 2013-03-20
ES2414936T3 (es) 2013-07-23
ATE534083T1 (de) 2011-12-15
US20120008500A1 (en) 2012-01-12
JP5221736B2 (ja) 2013-06-26
CN102298563A (zh) 2011-12-28
US8400924B2 (en) 2013-03-19
KR101110384B1 (ko) 2012-02-24
US8045472B2 (en) 2011-10-25
EP2271994A1 (en) 2011-01-12
WO2010077747A1 (en) 2010-07-08
HK1153024A1 (en) 2012-03-16
EP2271994B1 (en) 2011-11-16
KR101242775B1 (ko) 2013-03-12
CN102037455A (zh) 2011-04-27
HK1164486A1 (en) 2012-09-21
JP2012514384A (ja) 2012-06-21
CN102037455B (zh) 2013-11-20
ES2378211T3 (es) 2012-04-10
KR20110094102A (ko) 2011-08-19
CN102298563B (zh) 2014-04-09
EP2390791A1 (en) 2011-11-30

Similar Documents

Publication Publication Date Title
JP5166609B2 (ja) リソースの粒度がクレジットの粒度よりも大きいときのクレジット管理
US7698478B2 (en) Managed credit update
JP4800224B2 (ja) 構成可能な相互接続トポロジを用いたi/o帯域幅の適応割当て
US20080123525A1 (en) System and Method for Filtering Packets in a Switching Environment
US7506081B2 (en) System and method of maintaining high bandwidth requirement of a data pipe from low bandwidth memories
US20200076742A1 (en) Sending data using a plurality of credit pools at the receivers
JP2018520434A (ja) Usb2.0帯域幅予約のための方法およびシステム
US11722438B2 (en) Maintaining bandwidth utilization in the presence of packet drops
JP2004242333A (ja) 高速交換環境で共有されたメモリ資源を管理するシステム、方法及び論理
JP4408376B2 (ja) 交換のためにメモリに書き込まれるパケットをキューイングするシステム、方法及び論理
US20190187927A1 (en) Buffer systems and methods of operating the same
US7451254B2 (en) System and method for adaptive buffer allocation in a memory device interface
JP4852138B2 (ja) 高速交換環境でマルチキャスティングするシステム、方法及び論理
US8254380B2 (en) Managing messages transmitted in an interconnect network
CN112486871A (zh) 一种用于片上总线的路由方法以及系统
JP4406011B2 (ja) 通信ネットワークを介して接続されたプロセッシングユニットを備えた電子回路

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121023

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: 20121206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121220

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151228

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5166609

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250