JP2018503995A - スイッチ内のデータをバッファリングするための装置および方法 - Google Patents

スイッチ内のデータをバッファリングするための装置および方法 Download PDF

Info

Publication number
JP2018503995A
JP2018503995A JP2017526669A JP2017526669A JP2018503995A JP 2018503995 A JP2018503995 A JP 2018503995A JP 2017526669 A JP2017526669 A JP 2017526669A JP 2017526669 A JP2017526669 A JP 2017526669A JP 2018503995 A JP2018503995 A JP 2018503995A
Authority
JP
Japan
Prior art keywords
queue
switch
buffer
transmission point
credit counter
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
JP2017526669A
Other languages
English (en)
Other versions
JP6517934B2 (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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2018503995A publication Critical patent/JP2018503995A/ja
Application granted granted Critical
Publication of JP6517934B2 publication Critical patent/JP6517934B2/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
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3036Shared queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/103Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9036Common buffer combined with individual queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/101Packet switching elements characterised by the switching fabric construction using crossbar or matrix
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/50Overload detection or protection within a single switching element
    • H04L49/505Corrective measures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

スイッチ内のデータのバッファリングに関連する装置、方法および記録媒体が提供される。実施形態において、スイッチは、複数のキューバッファと、上記複数のキューバッファにそれぞれ関連付けられた複数のキューと、共有バッファと、前記複数のキューバッファと前記共有バッファとに連結されたキューポイントコントローラと、を含んでよい。実施形態において、キューポイントコントローラは、上記複数のキューバッファのうちの選択されたキューバッファ内の利用可能な領域の量を判断するよう構成されてよい。上記キューポイントコントローラはさらに、上記共有バッファの少なくとも一部を、上記選択されたキューバッファに関連付けられた選択されたキューに割り当てるよう構成されてよい。実施形態において、この割り当ては、上記選択されたキューバッファ内の判断された上記利用可能な領域の量に基づいてよい。他の実施形態が説明および/または特許請求されてよい。

Description

本開示は、ネットワーキングの分野に関する。具体的には、本開示は、スイッチ内のデータのバッファリングに関する。
ここに記載された背景技術は、本開示の文脈を一般的に示す目的のものである。本明細書において別途の記載がない限り、この節に記載の内容は、本願の請求項に対する先行技術ではなく、この節に組み込まれることにより先行技術であるとは認められない。
レガシ入力キュースイッチは、HOL(Head−of−Line)ブロッキングに起因する性能問題に遭遇することがある。HOLブロッキングとは、スイッチの1または複数のリソースに関する競合に起因して、キューの先頭にあるパケット(ヘッドパケット)がサービス提供を受けることができない状況を指してよい。当該パケットがサービス提供を受けることができないので、当該パケットはキューから転送されない可能性がある。結果的に、当該パケットは、同一キュー内の他の後続パケットをブロックする可能性があり、たとえ、それらの後続パケットが同様のリソース競合を有していなくても、キュー内の当該パケットの後方にある後続パケットのサービスを妨害する可能性がある。
以下の詳細な説明に、添付図面を組み合わせることで、実施形態は容易に理解されるであろう。本説明を容易にするため、同様の参照符号は同様の構造要素を指す。添付図面中、実施形態は限定ではなく例示として示されている。
本開示の実施形態による、本開示のバッファリングの教示に組み込まれるスイッチのブロック図を示す。 本開示の実施形態による、スイッチ内のデータをルーティングするための例示的な処理を示す。 本開示の実施形態による、本開示の様々な態様を実施するために好適に使用される例示的なコンピューティングシステムを示す。 開示された実施形態による、本明細書に記載の方法を実施するための命令を有する記録媒体を示す。
本明細書に、スイッチ内のデータのバッファリングに関連する装置、方法および記録媒体が提供される。実施形態において、スイッチは、複数の入力ポートおよび複数の出力ポートを含んでよい。スイッチは、デスティネーションノードにルーティングされるべき、パケットまたはパケットの一部を入力ポートにおいて受信してよい。スイッチは、1または複数のキューポイントを含んでよく、当該キューポイントにおいて、パケットまたはパケットの一部はバッファリングされてよい。これらのキューポイントは、複数のキューバッファおよび複数のキューを含んでよく、複数のキューは、複数の入力ポートのそれぞれに連結され、複数のキューバッファにそれぞれ関連付けられている。複数のキューバッファは、選択されたキューに関連付けられた、複数のキューバッファのうちの選択された1つに、ルーティングされるべきパケットまたはパケットの一部をバッファリングするための比較的小さな別個のバッファであってよい。実施形態において、選択されたキューは、パケットがデスティネーションノードに到達できるようにするために、スイッチの適切な出力ポートに関連付けられたキューであってよい。
いくつかの実施形態において、キューポイントはまた、共有バッファ、および上記複数のキューバッファと上記共有バッファとに連結されたキューポイントコントローラを含んでよい。キューポイントコントローラは、上記選択されたキューバッファ内の利用可能な領域の量を判断し、且つ、上記選択されたキューバッファ内の判断された上記利用可能な領域の量に基づいて、上記共有バッファの少なくとも一部を上記選択されたキューに割り当てるように構成されてよい。これにより、それぞれの選択されたキューに専用に割り当てられたより大きなバッファを有する必要なく、あたかも選択されたキューがそのようなより大きなバッファを有するかのように、上記選択されたキューが効果的に動作できるようにしてよい。結果的に、スイッチの集積回路コンポーネントにおける、より少ないスペースおよび/または電力の要件で、より効率的な処理が実現されてよい。
以下の詳細な説明においては、その一部を成す添付図面に対し参照がなされる。添付図面全体にわたり、同様の参照番号は同様の部材を指し、添付図面には、実施されてよい実施形態が例示として示されている。他の実施形態が利用されてよいこと、並びに本開示の範囲を逸脱することなく、構造的または論理的な変更がなされてよいことを理解されたい。従って、以下の詳細な説明は、限定的な意味に理解するのではなく、実施形態の範囲は、添付の特許請求の範囲およびその均等内容によって規定される。
本開示の複数の態様が、添付の詳細な説明に開示されている。本開示の代替的な実施形態およびその均等内容が、本開示の精神または範囲から離れることなく、考え出されてよい。以下に開示される同様の要素は、図面中、同様の参照符号によって示されることに留意されたい。
様々な処理が、特許請求された主題の理解に最も寄与する態様で、複数の別個の動作または処理として順番に記載されてよい。しかしながら、記載の順序は、これらの処理が必ず順序に依存するものであることを示唆するものとして解釈されるべきではない。特に、これらの処理は、提示の順序で実行されてなくてよい。記載の処理は、記載された実施形態とは異なる順序で実行されてよい。様々な追加の処理が実行されてよく、および/または記載された処理が追加の実施形態においては省略されてよい。
本開示の目的として、「Aおよび/またはB」と言う文言は、(A)、(B)、または(AおよびB)を意味する。本開示の目的として、「A、B、および/またはC」という文言は、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)、または(A、BおよびC)を意味する。
本説明は、「一実施形態において、」または「実施形態において、」という文言を使用することがあるが、これらはそれぞれ同一または異なる実施形態に係る1または複数を指してよい。さらに、本開示の実施形態に関し使用される「備える(comprising)」、「含む(including)」、「有する(having)」等の用語は、同義語である。
本明細書で使用される、「モジュール」という用語は、1または複数のソフトウェアプログラム若しくはファームウェアプログラムを実行する、特定用途向け集積回路(ASIC)、電子回路、プロセッサ(共有、専用、またはグループ)および/またはメモリ(共有、専用、またはグループ)、組み合わせ論理回路、並びに/または記載された機能を提供する他の好適なコンポーネントを指してよい、またはこれらの一部であってよい、またはこれらを含んでよい。
図1は、本開示の様々な実施形態によるスイッチ100を示す。スイッチ100は、複数の入力ポート102a〜102dおよび複数の出力ポート122a〜122dを含んでよい。スイッチ100は、入力ポート102a〜102dにおいて受信されたパケット(例えば、データまたは制御パケット)を、出力ポート122a〜122dのうちの1つにルーティングするよう構成されてよい。いくつかの実施形態において、スイッチは、入力ポート102a〜102dのいずれかから、出力ポート122a〜122dのいずれかへとパケットをルーティングするためのクロスバー112を用いて構成されてよい。例示のために4つのポートを持つスイッチとして図示されているものの、本開示の範囲から逸脱することなく、任意の数のポートが利用されてよいことを理解されたい。また、いくつかの実施形態において、スイッチ100は、より大型のスイッチのサブスイッチであってよく、またはマトリックススイッチの一部であってよい。
いくつかの実施形態において、スイッチ100は、複数のプロセッサ(図3のプロセッサ302a〜302b等)に連結されてよく、当該複数のプロセッサ間でデータをルーティングするために使用されてよい。いくつかの実施形態において、複数のスイッチ(例えば、スイッチ100)が互いに連結され、このような複数のプロセッサ間でデータをルーティングするためのファブリックまたはネットワークを形成してよい。ファブリックまたはネットワークの複数のスイッチが相互接続され、このような複数のプロセッサのうちの任意の2つのプロセッサ間に複数のルーティングパスを提供してよい。
様々な実施形態において、さらに、スイッチ100は1または複数のキューポイントを含んでよい。本明細書で使用されるとき、キューポイントはスイッチ内の任意の場所を示すべく使用されてよく、当該場所において、スイッチを通ってルーティングされているパケットまたはパケットの一部がバッファ内でキューに入れられてよい。実施形態において、このようなシナリオは、パケットまたはパケットの一部が、まだ処理のために利用可能ではないダウンストリームネイバーに送信されるときに生じてよい。本明細書で使用されるとき、ダウンストリームネイバーは、スイッチ内またはネットワーク内の次の場所を示すべく使用されてよく、パケットは最終デスティネーションに到達するために、当該次の場所にルーティングされる。同様に、アップストリームネイバーは、スイッチ内またはネットワーク内の直前の場所を示すべく使用されてよく、パケットは当該直前の場所を通ってルーティングされた。また、本明細書において、アップストリームネイバーは送信ポイントと称されてよい。
図示の通り、スイッチ100は、入力キューポイント124および出力キューポイント126を有してよい。他の実施形態においては、スイッチ100は追加の中間キューポイントを有してよく、このようものとしては、例えば、スイッチ100がマトリックススイッチである実施形態が挙げられる。本明細書の説明は、このようないずれのキューポイントにも該当し得る。
実施形態において、入力キューポイント124は、複数の入力キュー106a〜106dを含んでよい。入力キュー106a〜106dはそれぞれ、対応する複数の入力バッファ108a〜108dに関連付けられてよい。入力バッファ108a〜108dは、パケットをそれぞれのダウンストリームネイバーに送信することに備えそれぞれのキューにルーティングされたパケットまたはパケットの一部を格納するよう構成されてよい。実施形態において、入力キューポイント124は、入力キュー共有バッファ110を含んでよい。入力キュー共有バッファ110は、入力キューポイント124に対し追加のバッファリング容量を提供してよい。また、入力キューポイント124は、入力キューポイントコントローラ104を含んでよい。入力キューポイントコントローラ104は、入力キューバッファ108a〜108dと、入力キュー共有バッファ110とに連結されてよい。
いくつかの実施形態において、さらに、複数の入力キュー106a〜106dは、複数の仮想レーンまたは仮想チャネルをサポートするように編成されてよい。このような実施形態においては、複数の入力バッファ108a〜108dは、仮想レーンの各々に関連付けられたブロックに編成されてよい。このような実施形態においては、個々のキューに関して本明細書で後述されるバッファリングは、仮想レーンベースで類似の態様で実行されてよい。
実施形態において、入力キューポイントコントローラ104は、パケットの一部(例えば、フリット)を送信ポイントから受信するよう構成されてよく、入力キューポイントコントローラ104は、当該パケットの一部が一時的に格納されてよい入力キュー(例えば、入力キュー106a)の入力バッファ(例えば、入力バッファ108a)内の利用可能な領域の量を判断してよい。実施形態において、当該パケットの一部および当該パケットの残部が、スイッチ100の出力ポート(例えば、出力ポート122d)に宛てられてよい。このような出力ポートは、パケットのヘッダ内に含まれるデスティネーション場所識別子(DLID)、およびパケットの受信された部分をルーティングする先の適切な出力ポートを判断するための参照テーブルから判断されてよい。
いくつかの例において、出力ポート122dは、パケットにサービス提供するために解放されてよい。このような例においては、入力キュー106aにおいて必要とされる受信された部分のバッファリングをほとんどせずに、または一切せずに、受信された部分は、出力ポート122dに連結された出力キュー116dに転送されてよい。他の例においては、出力ポート122dは、別のパケットにサービス提供していてビジーであってよい。このような例においては、出力ポート122dが受信された部分に関連付けられたパケットにサービス提供するために利用可能になるまで、受信された部分は入力キュー106aの入力バッファ108aにバッファリングされてよい。
受信された部分が入力バッファ108a内にバッファリングされると、パケットの追加の部分が、送信ポイントから受信されてよい。出力ポート122dが解放された場合、前に受信されたパケットの部分は、入力バッファ108aから移動可能であってよく、出力キュー116dに送信されてよい。しかしながら、出力ポート122dが解放されていない場合、入力バッファ108a内に利用可能な領域が十分あれば、パケットの追加の部分は、前に受信されたパケットの部分と共に入力バッファ108a内にバッファリングされてよい。パケット全体が入力バッファ108a内にバッファリングされる、入力バッファ108aがパケットの部分で最大容量に到達する、または出力ポート122dが解放され且つ入力バッファ108a内にバッファリングされていたパケットの部分の処理の開始に利用可能になる、までこのような処理が継続されてよい。パケット全体を入力バッファ108a内にバッファリングできる例においては、パケットを入力ポート102aに送信する送信ポイントが、次のパケットの処理を開始できるように、パケット全体が送信ポイントから移動されてよい。同様に、出力ポート122dが解放される例においては、パケットのバッファリングされた部分は、入力キュー106aから出力キュー116dへ移動を開始してよく、送信ポイントからのパケットの部分の流れは、妨げられない状態のままであってよい。しかしながら、パケット全体を受信する前に、または出力ポート122dが解放される前に、入力バッファ108aが最大容量に到達した場合、送信ポイントによってこれから送信されることになるパケットの残り部分が、送信ポイントからの一切のさらなる送信をブロックしてよく、または別の送信ポイントアップストリームをブロックしてよい。いくつかの実施形態においては、入力バッファ108aは、上記の受信されたパケットの部分に加え、1または複数の前に受信されたパケットを格納するのに十分な大きさであってよいことを理解されたい。本開示により、このような実施形態が企図されるものの、共有バッファから追加の領域を割り当てることに関する説明を過度に複雑にするのを避けるために、長くは説明しない。
送信ポイントのこのようなブロッキングを回避するために、いくつかの実施形態において、入力キューポイントコントローラ104は、入力キュー共有バッファ110の少なくとも一部を、入力キュー106aに割り当てるよう構成されてよい。このような割り当てにより、パケット全体を送信ポイントから移動させることを可能にしてよく、また、送信ポイントが解放され、妨害されない状態のままであることを可能にしてよい。たとえ、出力ポート122dがブロックされ、出力ポート122dが入力バッファ108a内にバッファリングされたパケットの部分にサービス提供を開始できない場合であっても、このようであってよい。いくつかの実施形態においては、入力バッファ108a内の利用可能な領域の量、および入力バッファ108a内の利用可能な領域の量が利用可能な領域の予め定められた閾値に等しいかまたはそれより小さいかということに基づいて、入力キューポイントコントローラ104は、入力キュー共有バッファ110の当該少なくとも一部を入力キュー106aに割り当てるよう構成されてよい。このような閾値についてさらに以下説明する。いくつかの実施形態において、入力キューポイントコントローラ104は、パケットのサイズを判断(例えば、パケットのヘッダから)するよう構成されてよく、入力キューポイントコントローラ104は、割り当てるべき入力キュー共有バッファ110の当該部分のサイズを判断する際、当該パケットのサイズを利用してよい。
いくつかの実施形態において、スイッチ100は、スイッチ100を通るデータフローを制御するための様々なフロー制御メカニズムを利用するよう構成されてよい。例えば、いくつかの実施形態において、スイッチ100は、クレジットベースフロー制御メカニズムを利用するよう構成されてよい。このような実施形態においては、上記のような送信ポイントは、送信ポイントがデータを送信する先のキュー(例えば、入力キュー106a)のバッファ(例えば、入力バッファ108a)内の利用可能な領域をモニタリングするよう構成されたカウンタを含んでよい。このような実施形態においては、送信ポイントは、当該送信ポイントが存在するスイッチのリセットに応答して、入力キュー106aの入力バッファ108a内の利用可能なスロットの既知量にカウンタをリセットするよう構成されてよい。これらのスロットの各々は、パケットの単一の固定サイズ部分(例えば、フリット)を格納するよう構成されてよい。送信ポイントが入力キュー106aに送信するパケットのこれらの部分の各々に対し、カウンタは、入力バッファ108a内に残る利用可能なスロット数を示すべく、デクリメントされてよい。また、パケットの一部が、入力キュー106aから次のダウンストリームネイバーへ移動されると、信号、すなわち確認応答が送信ポイントに送信され、カウンタをインクリメントさせてよい。結果的に、クレジットベースのフロー制御においては、バッファリングされたパケットの部分が、入力キュー106aから次のダウンストリームネイバーへ移動を開始したという信号、すなわち確認応答が入力キュー106aから受信されるまで、カウンタのこのデクリメントは、生じてよい。このような実施形態においては、カウンタが入力キュー106aの入力バッファ108aが利用可能なスロットをこれ以上有していないことを示す場合、送信ポイントはパケットの部分の送信を停止してよい。
パケットの各部分は、送信ポイントから入力キュー106aへ移動するために、いくつかのクロックサイクルを費やしてよい。同様に、入力キュー106aから送信される確認応答は、入力キュー106aから送信ポイントに移動するために、いくつかのクロックサイクルを費やしてよい。結果的に、パケットの新しい部分はクロックサイクル毎に送信ポイントから送信されてよいので、確認応答が送信ポイントによって受信され得る前に送信されてよいパケットの部分の数は、ラウンドトリップ移動時間に依存してよい。本明細書において以降、ラウンドトリップ移動時間とは、送信ポイントと入力キュー106aとの間のラウンドトリップ時間を指すことにする。例えば、1パケットが送信ポイントから入力キュー106aへ移動するために4クロックサイクルかかり且つ確認応答が、入力キュー106aから送信ポイントへ移動するために、対応する4クロックサイクルがかかる実施形態について検討してみよう。このような例においては、送信ポイントと入力キュー106aとの間のラウンドトリップ時間は、2つの移動時間の合計、すなわち8クロックサイクルである。よって、この例においては、入力キュー106aから確認応答を受信する前に、送信ポイントは、1パケットの8つの部分を送信してよい。
いくつかの実施形態において、送信ポイントは、入力キュー106aにとっての利用可能な追加の領域を認識しなくてよい。このような実施形態においては、追加の領域が入力キュー106aに割り当て可能であるときに、入力キューポイントコントローラ104は、上記の確認応答が送信されるようにしてよい。この確認応答は、カウンタの構成に応じて、カウンタがデクリメントすることを防止してよく、または、カウンタをインクリメントさせてよい。このようにして、入力キューポイントコントローラ104は、送信ポイントが入力キュー106aにとっての利用可能な追加のバッファ領域を認識しなくても、送信ポイントから入力キュー106aへの継続的なデータフローを可能にしてよい。よって、追加のバッファ領域は、送信ポイントからは不可視であってよい。
上記のラウンドトリップ時間を理由として、入力キューポイントコントローラ104は、入力バッファ108aが最大容量に到達する前に、追加の領域の割り当てを試行してよい。入力バッファ108aが入力キュー共有バッファ110内の追加の領域を割り当てるべき最大容量に到達するまで、入力キューポイントコントローラが待機する場合、ラウンドトリップ移動時間が、送信ポイントが確認応答を待機しつつブロックされる原因となってよい。よって、上記のラウンドトリップ時間の例においては、送信できたであろうはずのパケットの8つの部分が送信されなくてよい。結果的に、入力バッファ108a内の利用可能なスロット数が、閾値に等しいかまたはそれより小さい場合、入力キューポイントコントローラは、入力キュー共有バッファ110の一部を割り当てるよう構成されてよく、ここで閾値はラウンドトリップ時間に等しいかまたはそれより大きい。このような構成で、ラウンドトリップ時間の影響を防止または低減してよい。このような実施形態においては、入力キューポイントコントローラ104は、送信ポイントのカウンタを本質的に模倣するその独自のシャドウカウンタを維持するよう構成されてよく、入力キューポイントコントローラ104は、ひとたびこのカウンタが上記のラウンドトリップ移動時間閾値に到達するかまたはそれを下回ると、入力キュー共有バッファ110の一部を割り当てるよう構成されてよい。入力キュー共有バッファの一部が正常に割り当てられると、入力キューポイントコントローラ104は、送信ポイントに、パケットの部分が入力キュー106aから次のダウンストリームネイバーへ移動していることを認識させるべく、上記の確認応答が送信ポイントに送信されるようにしてよい。
また、入力キューポイントコントローラ104は、入力キューポイント124の複数のキューのうちの1つに割り当てられた入力キュー共有バッファ110内の利用可能な領域の量をモニタリングしてよく、入力キューポイントコントローラ104は、利用可能な割り当てられた領域が、上記のような閾値に到達するか、またはそれを下回る場合に、入力キュー共有バッファの追加のブロックの割り当てを試行してよい。
また、いくつかの実施形態において、入力キューポイントコントローラ104は、ブロックがこれ以上必要とされなくてよいときを判断すべく、割り当てられた任意のブロックをモニタリングしてよい。このような実施形態においては、入力キューポイントコントローラ104は、これ以上必要ではないと判断された任意のブロックを空にするまたは解放してよい。いくつかの実施形態において、ブロックがこれ以上必要ではないときの判断は単純に、ブロックが空であるかに基づいてよい。ブロック内に格納された様々なパケットのすべての部分が、ブロックから次のダウンストリームネイバーへ移動された場合に、このような状況が発生し得る。他の実施形態においては、ブロックがこれ以上必要ではないときに関する判断はさらに、同一キューに割り当てられた別のブロック内の利用可能な領域の量が、上記の閾値に到達するか、またはそれを上回るかに基づいてよい。他の実施形態においては、ブロックがこれ以上必要ではないときに関する判断はさらに、同一キューに割り当てられた別のブロック内の利用可能な領域の量が、上記のシャドウカウンタによって示されるスロット数に到達するか、またはそれを上回るかに基づいてよい。
出力キューポイント126は、入力キューポイント124と類似の態様で構成されてよい。例えば、出力キューポイント126は、複数の出力キュー116a〜116dに連結された出力キューポイントコントローラ114および出力キュー共有バッファ120を含んでよい。出力キュー116a〜116dの各々は、出力キューバッファ118a〜118dのそれぞれに関連付けられてよい。実施形態において、出力キューポイント126は、上記の入力キューポイント124と類似の態様で機能するよう構成されてよい。よって、入力キューポイント124は、出力キューポイント126のための送信ポイントであってよい。
パケットが送信ポイントからキューポイントに移動すると、その後、当該キューポイントは次の送信ポイントになり、当該キューポイントからの次のダウンストリームネイバーは次のキューポイントになることを理解されたい。パケットが目的のデスティネーションに配信されるまで、このことが生じてよい。
いくつかの実施形態において、スイッチ100は、本明細書に記載の処理に関する1または複数のオペレーションを実行するよう構成された計算ロジックを有するメモリと共にパッケージされた1または複数のプロセッサを含んでよい。このような実施形態においては、スイッチ100は、システムオンチップ(SoC)の形態を取ってよい。このようなSoCが、任意の好適なコンピューティングデバイスにおいて、またはスタンドアロンのスイッチとして利用されてよい。
図2は、様々な実施形態による、スイッチ内のデータをバッファリングするための方法200を示す。方法200は、例えば、スイッチ100の入力キューポイントコントローラ104または出力キューポイントコントローラ114のいずれかによって実行されてよい。いくつかの実施形態において、スイッチは、1または複数の非一時的コンピュータ可読媒体を含んでよく、または当該媒体へのアクセスを有してよく、当該媒体は、実行時にスイッチに対し、方法200を実行させるための当該媒体上に格納された命令を有する。
方法200のボックス202において、スイッチのキューポイントコントローラは、選択されたキューを介してデスティネーションノードにルーティングされるべきパケットまたはパケットの一部を受信してよい。パケットは、例えば、スイッチの入力ポートを介して受信されてよい。ボックス204において、スイッチのキューポイントコントローラが、選択されたキューのバッファ内に利用可能な領域が存在するかを判断してよい。選択されたキューのバッファ内に利用可能な領域が存在する場合、方法200はボックス206に進んでよく、ボックス206で、パケットの受信された部分が、選択されたキューのバッファ内に格納されてよい。
ボックス208において、選択されたキューのバッファが、図1を参照して上記したような、利用可能な領域の予め定められた閾値に到達したか、またはそれを下回ったかに関する判断が、キューポイントコントローラによってなされてよい。キューポイントコントローラが、選択されたキューのバッファが、利用可能な領域の予め定められた閾値に到達していないか、またはそれを下回っていないと判断した場合、いくつかの実施形態において、方法200はボックス210に進んでよく、ボックス210で、図1を参照して上記したシャドウカウンタ等のローカルカウンタが、パケットの一部を送信した送信ポイントのカウンタを模倣すべく、デクリメントされてよい。ローカルカウンタがデクリメントされると、方法200は、ボックス212に進んでよく、ボックス212で処理は終了してよい。ボックス212は処理の終了を示すものの、キューポイントコントローラによって受信されるパケットの各追加の部分について、処理は反復されてよいことを理解されたい。
ボックス208に戻り、キューポイントコントローラが、選択されたキューのバッファが、利用可能な領域の予め定められた閾値に到達した、またはそれを下回ったと判断した場合、いくつかの実施形態において、方法200はボックス214に進んでよい。ボックス214において、キューポイントコントローラは、共有バッファ(例えば、入力キュー共有バッファ110)のブロックまたはブロックの一部が、選択されたキューに割り当てられているかを判断してよい。このようなブロックが割り当てられている場合、処理はボックス220に進んでよく、ボックス220で、キューポイントコントローラは、図1を参照して上記したような確認応答が、送信ポイントに送信されるようにし、選択されたキューに関連付けられた送信ポイントのカウンタがデクリメントされるのを防止してよい。その後、方法200は、ボックス212に進んでよく、ボックス212で、方法は終了してよい。
ボックス214に戻り、キューポイントコントローラが、共有バッファ(例えば、入力キュー共有バッファ110)のブロックが、選択されたキューに割り当てられていないと判断した場合、方法200はボックス216に進んでよい。ボックス216において、共有バッファ内に利用可能な領域が存在するかどうかに関する判断がなされてよい。共有バッファ内に利用可能な領域が存在しない場合、方法200はボックス210に進んでよく、ボックス210で、ローカルカウンタがデクリメントされ、その後、方法200はボックス212に進んでよく、ボックス212で、方法200は終了してよい。他方、共有バッファ内に利用可能な領域が存在する場合、方法200は、ボックス218に進んでよく、ボックス218で、キューポイントコントローラは、共有バッファのブロックまたはブロックの一部を、選択されたキューに割り当ててよく、共有バッファのブロックまたはブロックの一部が選択されたキューのバッファの末尾に効果的に付加されてよい。いくつかの実施形態においては、ボックス218において、入力キューポイントコントローラは、パケットのサイズを(例えば、パケットのヘッダから)判断するよう構成されてよく、入力キューポイントコントローラは、割り当てるべき共有バッファ110のブロックまたはブロックの一部のサイズを判断する際、当該パケットのサイズを利用してよい。ブロックがキューに割り当てられると、方法200はボックス220に進んでよく、ボックス220で、キューポイントコントローラは、図1を参照して上記したような確認応答が送信ポイントに送信されるようにし、選択されたキューに関連付けられた送信ポイントのカウンタがデクリメントされるのを防止してよい。その後、方法200はボックス212に進んでよく、ボックス212で、方法は終了してよい。
ボックス204に戻り、選択されたキューのバッファ内に利用可能な領域が存在しない場合、方法200はボックス222に進んでよく、ボックス222で、キューポイントコントローラは、共有バッファ(例えば、入力キュー共有バッファ110)のブロックまたはブロックの一部が、選択されたキューに割り当てられているかを判断してよい。このようなブロックが割り当てられていない場合、処理はボックス216に進んでよい。上記の通り、ボックス216において、共有バッファ内に利用可能な領域が存在するかどうかに関する判断がなされてよい。共有バッファ内に利用可能な領域が存在しない場合、方法200はボックス210に進んでよく、ボックス210で、ローカルカウンタがデクリメントされた後、方法200はボックス212に進んでよく、ボックス212で、方法200は終了してよい。他方、共有バッファ内に利用可能な領域が存在する場合、方法200は、ボックス218に進んでよく、ボックス218で、キューポイントコントローラは、共有バッファのブロックまたはブロックの一部を、選択されたキューに割り当ててよい。このような割り当てられたブロックまたはブロックの一部は、選択されたキューのバッファの末尾に効果的に付加されてよい。上記の通り、いくつかの実施形態においては、ブロック218において、入力キューポイントコントローラは、パケットのサイズを(例えば、パケットのヘッダから)判断するよう構成されてよく、入力キューポイントコントローラは、割り当てるべき共有バッファ110のブロックまたはブロックの一部のサイズを判断する際、当該パケットのサイズを利用してよい。ブロックが選択されたキューに割り当てられると、方法200はボックス220に進んでよく、ボックス220で、キューポイントコントローラは、図1を参照して上記したような確認応答が、送信ポイントに送信されるようにし、選択されたキューに関連付けられた送信ポイントのカウンタがデクリメントされるのを防止してよい。その後、方法200はボックス212に進んでよく、ボックス212で、方法は終了してよい。
ボックス222に戻り、キューポイントコントローラが、共有バッファ(例えば、入力キュー共有バッファ110)のブロックが、選択されたキューに割り当てられていると判断した場合、方法200はボックス224に進んでよい。ボックス224において、キューポイントコントローラは、パケットの受信された部分が、共有バッファの割り当てられたブロック内に格納されるようにしてよい。その後、方法200はボックス226に進んでよい。
ボックス226において、共有キューの割り当てられたブロックが、利用可能な領域の予め定められた閾値に到達したか、またはそれを下回ったかに関する判断が、キューポイントコントローラによってなされてよい。このような閾値は、上記のボックス208に関して説明した閾値と同一または異なってよい。キューポイントコントローラが、共有キューの割り当てられたブロックが、利用可能な領域の予め定められた閾値に到達していない、またはそれを下回っていないと判断した場合、方法200は、ボックス220に進んでよく、ボックス220で、キューポイントコントローラは、図1を参照して上記したような確認応答が、送信ポイントに送信されるようにし、選択されたキューに関連付けられた送信ポイントのカウンタをインクリメントさせるか、または選択されたキューに関連付けられた送信ポイントのカウンタがデクリメントされるのを防止するかのいずれかを行ってよい。その後、方法200はボックス212に進んでよく、ボックス212で、方法は終了してよい。
ボックス226に戻り、キューポイントコントローラが、選択されたキューの共有バッファの割り当てられたブロックが、利用可能な領域の予め定められた閾値に到達した、またはそれを下回ったと判断した場合、いくつかの実施形態において、方法200はボックス216に進んでよい。上記の通り、ボックス216において、共有バッファ内に利用可能な領域が存在するかどうかに関する判断がなされてよい。共有バッファ内に利用可能な領域が存在しない場合、方法200はボックス210に進んでよく、ボックス210で、ローカルカウンタがデクリメントされ、その後、方法200はボックス212に進んでよく、ボックス212で、方法200は終了してよい。他方、共有バッファ内に利用可能な領域が存在する場合、方法200はボックス218に進んでよく、ボックス218で、キューポイントコントローラは、共有バッファの追加のブロックまたはブロックの一部を、選択されたキューに割り当ててよい。共有キューのこの追加のブロックまたはブロックの一部は、前に割り当てられたブロックまたはブロックの一部の末尾に効果的に付加されてよい。上記の通り、いくつかの実施形態においては、ブロック218において、入力キューポイントコントローラは、パケットのサイズを判断(例えば、パケットのヘッダから)するよう構成されてよく、入力キューポイントコントローラは、割り当てるべき共有バッファ110のブロックまたはブロックの一部のサイズを判断する際、当該パケットのサイズを利用してよい。ブロックがキューに割り当てられると、方法200はボックス220に進んでよく、ボックス220で、キューポイントコントローラは、図1を参照して上記したような確認応答が、送信ポイントに送信されるようにし、選択されたキューに関連付けられた送信ポイントのカウンタがデクリメントされるのを防止してよい。その後、方法200はボックス212に進んでよく、ボックス212で、方法は終了してよい。
上記の通り、いくつかの実施形態においては、割り当てられたブロックの閾値は、選択されたキューのバッファの閾値とは異なってよい。このような実施形態においては、割り当てられたブロックの閾値は、選択されたキューのバッファの閾値より大きくてよい。これらの実施形態においては、割り当てられたブロック内の利用可能な領域が、割り当てられたブロックの閾値に到達するか、またはそれを下回ると、キューポイントコントローラは、共有バッファ内の新しいブロックの割り当てをさらに試行してよい。しかしながら、割り当てられたブロック内の利用可能な領域の量がローカルカウンタの値に等しくなるまで、上記の確認応答がさらに送信されてよい。
いくつかの実施形態においては、パケットが送信ポイントから受信されない場合であっても、キューポイントコントローラは、上記の確認応答の送信ポイントへの送信を継続してよい。このような実施形態においては、共有バッファ内の割り当てられた利用可能な領域の量が、ローカルカウンタの値より大きい限り、確認応答がキューポイントコントローラによって、送信ポイントへ送信されてよい。このような実施形態においては、ひとたびローカルカウンタが、カウンタの最大値(例えば、選択されたキューバッファのサイズ)に到達するか、またはひとたびローカルカウンタが、共有バッファ内の割り当てられた利用可能な領域の量に到達すると、キューポイントコントローラは、確認応答の送信を終了してよい。これらの実施形態においては、ひとたびパケットの部分の受信が再び開始されると、キューポイントコントローラはまた、ローカルカウンタをデクリメントし、ローカルカウンタが送信ポイントのカウンタを模倣できるようにしてよいことを理解されたい。
図3は、本開示の選択された態様を実施するために好適に使用されてよい、例示的なコンピューティングシステム300(以降、「システム300」と言う)を示す。図示の通り、システム300は、複数のコンピュータ301a〜301bおよび当該コンピュータに連結されたファブリックまたはネットワーク320を含んでよい。ファブリックまたはネットワーク320は、コンピュータ301a〜301b間(例えば、コンピュータ301a〜301bのそれぞれのプロセッサ302a〜302b間)でデータをルーティングするための互いに連結された複数のスイッチ330を含んでよい。スイッチ330のうちの1または複数は、本明細書に記載のスイッチ100(キューポイント124および126に対応するキューポイント340を有する)に対応してよく、および/または本明細書に記載の方法200を実行してよい。
コンピュータ301a〜301bは、複数のスイッチ330に連結され、当該2つのコンピュータ301a〜301b間の複数のルーティングパスを提供してよい。図3には2つのコンピュータ301a〜301bのみが図示されているものの、ファブリック若しくはネットワーク320および/またはスイッチ330を使用して、3つ以上のコンピュータを含む、任意の好適な数のコンピュータ間でデータをルーティングしてよいことを理解されたい。スイッチは、本明細書に記載のバッファリング処理の1または複数の態様を実行すべく、図1を参照して上記したキューポイント等の1または複数のキューポイント340を含んでよい。いくつかの実施形態において、スイッチ330は、コンピュータ301a〜301bの通信インタフェース310a〜310bにそれぞれ連結されてよい。代替的にまたは追加的に、スイッチ330は、プロセッサ302a〜302b間でデータをルーティングすべく、単一のコンピュータ301aの複数のプロセッサ302a〜302bに連結されてもよい。
個々のコンピュータ301a〜301bは、1または複数のプロセッサまたはプロセッサコア302a〜302b、およびシステムメモリ304a〜304bを含んでよい。特許請求の範囲を含む本願の目的において、「プロセッサ」および「プロセッサコア」という用語は、文脈が明らかに別のものを要求していない限り、同義語と考えられてよい。また、コンピュータ301a〜301bはそれぞれ大容量ストレージデバイス306a〜306b(ディスケット、ハードドライブ、コンパクトディスクリードオンリメモリ(CD‐ROM)等)、それぞれ入/出力デバイス308a〜308b(ディスプレイ、キーボード、カーソル制御器等)、およびそれぞれ通信インタフェース310a〜310b(ネットワークインタフェースカード、モデム等)を含んでよい。これらの要素は、それぞれシステムバス312a〜312bを介して互いに連結されてよく、システムバス312a〜312bは1または複数のバスを表わしてよい。複数のバスの場合、それらは1または複数のバスブリッジ(不図示)によってブリッジされてよい。これらの要素の各々は、当該技術分野で既知のその従来の機能を実行してよい。いくつかの実施形態において、コンピュータ301a〜301bは、据置デバイス、モバイルデバイス、またはサーバであってよい。
当業者に理解されるところであるが、本開示は、方法またはコンピュータプログラム製品として具現化されてよい。従って、本開示は、上記の通りハードウェアでの具現化に加え、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、またはソフトウェア態様とハードウェア態様とを組み合わせる実施形態の形を取ってよく、それらはすべて一般的に「回路」、「モジュール」若しくは「システム」と呼ばれてよい。さらに、本開示は、任意の有形または非一時的媒体の表現に具現化されたコンピュータプログラム製品の形を取ってもよく、当該媒体は当該媒体内に具現化されたコンピュータで使用可能なプログラムコードを有する。図4は、命令の格納に使用するために好適であってよい例示のコンピュータ可読非一時的記録媒体を示し、当該命令は、装置による命令の実行に応答して、装置に対し、本開示の選択された態様を実施させる。図示の通り、非一時的コンピュータ可読記録媒体402は、複数のプログラミング命令404を含んでよい。プログラミング命令404は、例えばスイッチ100またはスイッチ330等のデバイスが、当該プログラミング命令の実行に応答して、本明細書に記載のバッファリング処理(例えば、図1を参照して説明したバッファリング処理または図2の方法200)を実行することを可能にするように構成されてよい。代替的な実施形態においては、代わりに、プログラミング命令404は、複数のコンピュータ可読非一時的記録媒体402上に配置されてよい。代替的な実施形態においては、プログラミング命令404は、信号等のコンピュータ可読一時的記録媒体402上に配置されてよい。
1または複数のコンピュータで使用可能な媒体またはコンピュータ可読媒体の任意の組み合わせが利用されてよい。コンピュータで使用可能な媒体またはコンピュータ可読媒体は、例えば、限定はされないが、電子、磁気、光、電磁、赤外線または半導体のシステム、装置、デバイスまたは伝搬媒体であってよい。コンピュータ可読媒体のより具体的な例(非網羅的な列挙)としては、以下のもの、すなわち、1または複数の配線を有する電気的接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROMまたはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスクリードオンリメモリ(CD‐ROM)、光ストレージデバイス、インターネット若しくはイントラネットをサポートするような送信媒体、または磁気ストレージデバイスが含まれるであろう。コンピュータで使用可能な媒体またはコンピュータ可読媒体は、プログラムが印刷される紙または別の好適な媒体ですらあってよいことに留意されたい。というのは、プログラムは、例えば、当該紙または他の媒体の光学的スキャンを介して電子的にキャプチャされた後、コンパイル、解釈または好適な態様でのそれら以外の処理が可能であり、必要な場合はその後にコンピュータメモリに格納可能であるからである。この文書の文脈では、コンピュータで使用可能な媒体またはコンピュータ可読媒体は、命令実行システム、装置またはデバイスによって、またはそれらとの連携で、使用するためのプログラムを包含、格納、通信、伝搬または転送できるいずれの媒体であってもよい。コンピュータで使用可能な媒体は、ベースバンドにおけるまたは搬送波の一部としての、伝搬されたデータ信号を含んでよく、当該データ信号はデータ信号と共に具現化されたコンピュータで使用可能なプログラムコードを備える。コンピュータで使用可能なプログラムコードは、限定はされないが、無線、電線、光ファイバケーブル、RF等を含む、任意の適切な媒体を使用して送信されてよい。
本開示の処理を実行するためのコンピュータプログラムコードは、1または複数のプログラミング言語を任意に組み合わせて記述されてよく、それらとしては、Java(登録商標)、Smalltalk、C++等のオブジェクト指向プログラミング言語、および「C」プログラミング言語または類似のプログラミング言語等の従来の手続型プログラミング言語が含まれる。プログラムコードは、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、スタンドアロンのソフトウェアパッケージとして、ユーザのコンピュータ上で部分的に且つリモートコンピュータ上で部分的に、あるいはリモートコンピュータ若しくはサーバ上で全体的に実行されてよい。後者のシナリオでは、リモートコンピュータはユーザのコンピュータに任意のタイプのネットワークを介して接続されてよく、それらとしては、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)が含まれる。あるいは、接続は、外部のコンピュータ(例えば、インターネットサービスプロバイダを使用してインターネットを介して)に対しなされてよい。
本開示は、本開示の実施形態による方法、装置(システム)およびコンピュータプログラム製品に係るフロー図並びに/またはブロック図を参照して記載されている。フロー図および/またはブロック図の各ブロック、並びにフロー図および/またはブロック図のブロックの組み合わせが、コンピュータプログラム命令によって実装可能であることを理解されたい。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに供給され、機械を生成してよく、その結果、命令はコンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行され、フローチャートおよび/またはブロック図の1つのブロック若しくは複数のブロックに示された機能/動作を実装するための手段を形成する。
また、これらのコンピュータプログラム命令は、コンピュータ可読媒体に格納されてよく、当該命令は、コンピュータまたは他のプログラム可能なデータ処理装置に対し、特定の方法で機能するよう命令可能であり、その結果、コンピュータ可読媒体内に格納された命令は、フローチャートおよび/またはブロック図の1つのブロック若しくは複数のブロックに示された機能/動作を実装する命令手段を含む製品を生成する。
また、コンピュータプログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置にロードされ、一連の処理ステップがコンピュータまたは他のプログラム可能な装置上で実行されるようにして、コンピュータで実装されるプロセスを生成してよく、その結果、コンピュータまたは他のプログラム可能な装置上で実行される命令は、フローチャートおよび/またはブロック図の1つのブロック若しくは複数のブロックに示された機能/動作を実装するためのプロセスをもたらす。
図面中のフローチャートおよびブロック図は、本開示の様々な実施形態による、システム、方法およびコンピュータプログラム製品の考え得る実装に関するアーキテクチャ、機能および処理を示す。この点において、フローチャートまたはブロック図の各ブロックは、モジュール、セグメントまたはコードの一部を表わしてよく、それらは示された論理機能を実装するための1または複数の実行可能な命令を含む。また、いくつかの代替的な実装においては、ブロックに示される機能は、図に示される順序とは異なって行われてよいことに留意されたい。例えば、連続して図示されている2つのブロックが実際には、実質的に同時に実行されてもよく、あるいは、当該ブロックは、関与する機能に応じて、逆順に実行される場合もあってよい。また、ブロック図および/またはフロー図の各ブロック、並びにブロック図および/またはフロー図のブロックの組み合わせが、示された機能または動作を実行する専用ハードウェアベースのシステム、または専用ハードウェアおよびコンピュータ命令の組み合わせによって実装可能であることにも留意されたい。
本明細書で使用される用語は、特定の実施形態の説明目的のためだけに使用されており、本開示を限定する意図ではない。本明細書で使用される、単数形の「a」、「an」および「the」は、文脈が明示に別途の指定をしない限り、複数形も含む意図である。さらに、「備える(comprises)」および/または「備え(comprising)」という用語が本明細書で使用されるとき、記載された特徴、整数、手順、処理、要素および/またはコンポーネントの存在を指定するものの、1または複数の他の特徴、整数、手順、手順、処理、要素、コンポーネントおよび/またはそれらのグループの存在または追加を排除しないことを理解されたい。
実施形態は、コンピュータ処理、コンピューティングシステムとして、またはコンピュータ可読媒体に係るコンピュータプログラム製品等の製品として実装されてよい。コンピュータプログラム製品は、コンピュータシステムによって読み取り可能であり且つコンピュータ処理を実行するためのコンピュータプログラム命令でエンコーディングされたコンピュータ記録媒体であってよい。
以下の請求項における対応する構造、材料、動作、およびあらゆるミーンズプラスファンクション要素の均等内容は、具体的に特許請求された他の請求項の要素と組み合わされて機能を実行するための任意の構造、材料または動作を含む意図である。本開示の説明は、例示および説明の目的で示されているものの、網羅的であること、または開示された形態の開示内容に限定する意図はない。本開示の範囲および精神から逸脱することなく、多くの修正および変形が当業者にとって自明であろう。本開示の原理および実際の用途を説明するために、および当業者が実施形態の開示内容を理解できるために、想起される特定の使用に好適な様々な修正例と共に、本明細書に記載の実施形態は選択され、記載された。様々な実施形態に係るいくつかの非限定的な例を以下に示す。
例1は、パケットをルーティングするためのスイッチであって、複数のキューバッファと、上記複数のキューバッファにそれぞれ関連付けられた複数のキューと、共有バッファと、上記複数のキューバッファと上記共有バッファとに連結されたキューポイントコントローラと、を備え、上記キューポイントコントローラは、上記複数のキューのうちの選択されたキューに宛てられたパケットの一部を送信ポイントから受信し、上記選択されたキューに関連付けられた、上記複数のキューバッファのうちの選択されたキューバッファ内の利用可能な領域の量を判断し、上記選択されたキューバッファ内の判断された上記利用可能な領域の量に基づいて、上記共有バッファの少なくとも一部を、上記選択されたキューに割り当て、上記共有バッファの上記少なくとも一部は上記送信ポイントに不可視である、スイッチを含んでよい。
例2は、例1の主題を含んでよく、上記選択されたキューバッファ内の判断された上記利用可能な領域の量に基づいて、上記共有バッファの少なくとも一部を、上記選択されたキューに割り当てることは、上記選択されたキューバッファ内の上記利用可能な領域の量が、利用可能な領域の閾値に等しいか、またはそれより小さいかに基づく。
例3は、例1または2の主題を含んでよく、上記選択されたキューは、ネットワークの上記スイッチの1または複数の出力ポートに連結され、上記パケットの上記一部は、上記1または複数の出力ポートのうちのある出力ポートに宛てられ、上記キューポイントコントローラはさらに、上記パケットの上記一部を上記共有バッファの上記少なくとも一部に格納し、上記共有バッファの上記少なくとも一部が上記送信ポイントに対し不可視となり得るように、信号を上記送信ポイントに送信し、上記信号は、上記送信ポイントが、上記選択されたキューに関連付けられたクレジットカウンタをデクリメントすることを防止する、または上記送信ポイントに、上記選択されたキューに関連付けられた上記クレジットカウンタをインクリメントさせる。
例4は例3の主題を含んでよく、上記共有バッファの上記少なくとも一部のサイズは、上記パケットのサイズに基づく。
例5は、例3または4のいずれかの主題を含んでよく、上記クレジットカウンタは、上記スイッチのクレジットベースフロー制御メカニズムの一部であり、上記信号は、上記送信ポイントに対し、データが上記選択されたキューから移動されたことを示す。
例6は、例3から5のいずれかに係る主題を含んでよく、上記複数のキューバッファ、上記複数のキューおよび上記共有バッファは、キューポイントを形成し、上記予め定められた閾値は、上記送信ポイントと上記キューポイントとの間のラウンドトリップ送信時間に基づく。
例7は、例3から6のいずれかに係る主題を含んでよく、上記クレジットカウンタは、上記送信ポイントが上記選択されたキューバッファ内の利用可能な領域の量をモニタリングできるようにする送信ポイントクレジットカウンタであり、上記スイッチはさらに、上記選択されたキューに関連付けられたローカルクレジットカウンタを有し、上記キューポイントコントローラはさらに、上記ローカルクレジットカウンタに、上記送信ポイントクレジットカウンタを模倣させて、上記キューポイントコントローラが、上記信号を上記送信ポイントに送信するときを判断できるようにする。
例8は、例7の主題を含んでよく、上記キューポイントコントローラはさらに、上記共有バッファの前に割り当てられた部分が必要かを判断し、上記割り当てられた部分がこれ以上必要ではないとの判断に応答して、上記共有バッファの上記前に割り当てられた部分を解放する。
例9は、例8の主題を含んでよく、上記共有バッファの上記前に割り当てられた部分がこれ以上必要ではないと判断することは、上記共有バッファの上記前に割り当てられた部分が空であることの指標、および、上記選択されたキューバッファが空であることの指標、上記共有バッファの前に割り当てられた別の部分が、予め定められた閾値より大きいか、またはそれに等しい利用可能な領域の量を有することの指標、または上記共有バッファの前に割り当てられた別の部分が、上記ローカルカウンタの値に等しいか、またはそれより大きい利用可能な領域の量を有することの指標、に基づく。
例10は、例9の主題を含んでよく、上記送信ポイントクレジットカウンタおよび上記ローカルクレジットカウンタは、上記スイッチのリセットに応答して、上記選択されたキューバッファのサイズにリセットされる。
例11は、例1から10のいずれかに係る主題を含んでよく、上記複数のキューバッファ、上記複数のキューおよび上記共有バッファは、キューポイントを形成し、上記送信ポイントは、上記スイッチの別のキューポイントである。
例12は、例1から11のいずれかに係る主題を含んでよく、上記複数のキューバッファ、上記複数のキューおよび上記共有バッファは、キューポイントを形成し、上記キューポイントは、上記スイッチのサブスイッチの一部である。
例13は、例1から12のいずれかに係る主題を含んでよく、上記スイッチは、1または複数のプロセッサをさらに有するシステムオンチップ(SoC)である。
例14は、スイッチを動作させる方法を含んでよく、当該方法は、スイッチのキューポイントのキューポイントコントローラによって、パケットの少なくとも一部を送信ポイントから受信する段階と、上記キューポイントコントローラによって、上記キューポイントのキューに関連付けられたキューバッファ内に上記パケットの上記少なくとも一部を格納する段階と、上記キューポイントコントローラによって、上記キューバッファ内の利用可能な領域を判断する段階と、上記キューポイントコントローラによって、上記キューバッファ内の上記利用可能な領域に基づいて、共有バッファの少なくとも一部を上記キューに割り当てる段階であって、上記共有バッファは、上記キューポイントの1または複数の追加のキューに関連付けられる、割り当てる段階と、上記キューポイントコントローラによって、信号を上記送信ポイントに送信して、上記送信ポイントが上記キューに関連付けられたクレジットカウンタをデクリメントすることを防止する、または、上記送信ポイントに、上記キューに関連付けられた上記クレジットカウンタをインクリメントさせる段階と、を備える。
例15は、例14の主題を含んでよく、上記キューバッファ内の判断された上記利用可能な領域の量に基づいて割り当てる段階は、上記キューバッファ内の上記利用可能な領域の量が、利用可能な領域の予め定められた閾値に等しいか、またはそれより小さいかに基づく。
例16は、例15の主題を含んでよく、上記クレジットカウンタは、上記スイッチのクレジットベースフロー制御メカニズムの一部であり、上記信号は、上記データが上記キューから移動されることを示す。
例17は、例15または16のいずれかの主題を含んでよく、上記予め定められた閾値は、上記送信ポイントと上記キューポイントとの間のラウンドトリップ送信時間に基づく。
例18は、例15から17のいずれかに係る主題を含んでよく、上記クレジットカウンタは、上記送信ポイントが上記キューバッファ内の利用可能な領域の量をモニタリングできるようにする送信ポイントクレジットカウンタであり、上記方法はさらに、上記キューポイントコントローラによって、ローカルクレジットカウンタに、上記送信ポイントクレジットカウンタを模倣させる段階と、上記キューポイントコントローラによって、上記ローカルカウンタの上記値に少なくとも部分的に基づいて、上記信号を上記送信ポイントに送信するときを判断する段階と、を備える。
例19は、例18の主題を含んでよく、上記スイッチのリセットに応答して、上記ローカルクレジットカウンタを、上記キューバッファのサイズにリセットする段階をさらに備える。
例20は、1または複数の非一時的コンピュータ可読媒体であって、上記1または複数の非一時的コンピュータ可読媒体は自身に格納された命令を備え、上記命令は、スイッチのキューポイントのキューポイントコントローラに、上記キューポイントコントローラによる実行に応答して、パケットの少なくとも一部を送信ポイントから受信させ、上記キューポイントのキューに関連付けられたキューバッファ内に上記パケットの少なくとも一部を格納させ、上記キューバッファ内の利用可能な領域の量に基づいて、共有バッファの少なくとも一部を上記キューに割り当てさせ、上記共有バッファは、上記キューポイントの1または複数の追加のキューに関連付けられており、信号を上記送信ポイントに送信させ、上記送信ポイントが上記キューに関連付けられたクレジットカウンタをデクリメントすることを防止する、または、上記送信ポイントに、上記キューに関連付けられた上記クレジットカウンタをインクリメントさせる、1または複数の非一時的コンピュータ可読媒体を含んでよい。
例21は、例20の主題を含んでよく、上記キューバッファ内の上記利用可能な領域の量に基づいて割り当てさせることは、上記キューバッファ内の上記利用可能な領域の量が、利用可能な領域の予め定められた閾値に等しいか、またはそれより小さいかに基づく。
例22は、例21の主題を含んでよく、上記クレジットカウンタは、上記スイッチのクレジットベースフロー制御メカニズムの一部であり、上記信号は、データが上記キューから移動されたことを示す。
例23は、例21または22のいずれかの主題を含んでよく、上記予め定められた閾値は、上記送信ポイントと上記キューポイントとの間のラウンドトリップ送信時間に基づく。
例24は、例21から23のいずれかに係る主題を含んでよく、上記クレジットカウンタは、上記送信ポイントが、上記キューバッファ内の利用可能な領域の量をモニタリングできるようにする送信ポイントクレジットカウンタであり、上記命令は、上記キューポイントコントローラによる実行に応答して、さらに、上記キューポイントコントローラに、ローカルクレジットカウンタに、上記送信ポイントクレジットカウンタを模倣させるようにさせ、上記ローカルカウンタの上記値に少なくとも部分的に基づいて、上記信号を上記送信ポイントに送信するときを判断させる。
例25は、例24の主題を含んでよく、上記命令は、上記キューポイントコントローラによる実行に応答して、さらに、上記キューポイントコントローラに、上記スイッチのリセットに応答して、上記ローカルクレジットカウンタを上記キューバッファのサイズにリセットさせる。
例26は、スイッチのキューポイントコントローラによって、パケットの少なくとも一部を送信ポイントから受信するための手段と、上記キューポイントコントローラによって、上記キューポイントのキューに関連付けられたキューバッファ内に上記パケットの上記少なくとも一部を格納するための手段であって、上記キューは上記パケットが送信される先の上記スイッチの出力ポートに関連付けられている、格納するための手段と、上記キューバッファ内の利用可能な領域を判断するための手段と、上記キューバッファ内の上記利用可能な領域に基づいて、上記共有バッファ内の少なくとも一部を上記キューに割り当てるための手段であって、上記共有バッファは上記キューポイントの1または複数の追加のキューに関連付けられている、割り当てるための手段と、信号を送信ポイントに送信して、上記送信ポイントが上記キューに関連付けられたクレジットカウンタをデクリメントすることを防止する、または、上記送信ポイントに上記キューに関連付けられた上記クレジットカウンタをインクリメントさせるための手段と、を備える、パケットをルーティングするためのスイッチを含んでよい。
例27は、例26の主題を含んでよく、上記キューバッファ内の判断された上記利用可能な領域の量に基づいて割り当てるための手段は、上記キューバッファ内の上記利用可能な領域の量が、利用可能な領域の予め定められた閾値に等しいか、またはそれより小さいかに基づく。
例28は、例27の主題を含んでよく、上記クレジットカウンタは、上記スイッチのクレジットベースフロー制御メカニズムの一部であり、上記信号は、データが上記キューから移動されたことを示す。
例29は、例27または28のいずれかの主題を含んでよく、上記予め定められた閾値は、上記送信ポイントと上記キューポイントとの間のラウンドトリップ送信時間に基づく。
例30は、例27から29のいずれかに係る主題を含んでよく、上記クレジットカウンタは、上記送信ポイントが、上記キューバッファ内の利用可能な領域の量をモニタリングできるようにする送信ポイントクレジットカウンタであり、上記スイッチはさらに、ローカルクレジットカウンタに、上記送信ポイントクレジットカウンタを模倣させるための手段と、上記ローカルカウンタの上記値に少なくとも部分的に基づいて、上記信号を上記送信ポイントに送信するときを判断させるための手段と、を備える。
例31は、例30の主題を含んでよく、上記スイッチのリセットに応答して、上記ローカルクレジットカウンタを上記キューバッファのサイズにリセットするための手段をさらに備える。
本開示の精神または範囲から逸脱することなく、様々な修正例および変形例が、開示されたデバイスおよび関連方法に係る開示の実施形態においてなされ得ることは当業者にとって自明なところである。故に、当該修正例および変形例がいずれかの請求項並びにそれらの均等内容の範囲に属する場合、本開示は上記開示の実施形態に係る当該修正例および変形例を包含する意図である。
本開示の精神または範囲から逸脱することなく、様々な修正例および変形例が、開示されたデバイスおよび関連方法に係る開示の実施形態においてなされ得ることは当業者にとって自明なところである。故に、当該修正例および変形例がいずれかの請求項並びにそれらの均等内容の範囲に属する場合、本開示は上記開示の実施形態に係る当該修正例および変形例を包含する意図である。
(項目1)
パケットをルーティングするためのスイッチであって、
複数のキューバッファと、
上記複数のキューバッファにそれぞれ関連付けられた複数のキューと、
共有バッファと、
上記複数のキューバッファと上記共有バッファとに連結されたキューポイントコントローラと、を備え、
上記キューポイントコントローラは、
上記複数のキューのうちの選択されたキューに宛てられたパケットの一部を送信ポイントから受信し、
上記選択されたキューに関連付けられた、上記複数のキューバッファのうちの選択されたキューバッファ内の利用可能な領域の量を判断し、
上記選択されたキューバッファ内の判断された上記利用可能な領域の量に基づいて、上記共有バッファの少なくとも一部を、上記選択されたキューに割り当て、
上記共有バッファの上記少なくとも一部は上記送信ポイントに不可視である、スイッチ。
(項目2)
上記選択されたキューバッファ内の判断された上記利用可能な領域の量に基づいて、上記共有バッファの少なくとも一部を、上記選択されたキューに割り当てることは、上記選択されたキューバッファ内の上記利用可能な領域の量が、利用可能な領域の閾値に等しいか、またはそれより小さいかに基づく、項目1に記載のスイッチ。
(項目3)
上記選択されたキューは、ネットワークの上記スイッチの1または複数の出力ポートに連結され、
上記パケットの上記一部は、上記1または複数の出力ポートのうちのある出力ポートに宛てられ、
上記キューポイントコントローラはさらに、
上記パケットの上記一部を上記共有バッファの上記少なくとも一部に格納し、
上記共有バッファの上記少なくとも一部が上記送信ポイントに対し不可視となり得るように、信号を上記送信ポイントに送信し、
上記信号は、
上記送信ポイントが、上記選択されたキューに関連付けられたクレジットカウンタをデクリメントすることを防止する、または
上記送信ポイントに、上記選択されたキューに関連付けられた上記クレジットカウンタをインクリメントさせる、項目1に記載のスイッチ。
(項目4)
上記共有バッファの上記少なくとも一部のサイズは、上記パケットのサイズに基づく、項目3に記載のスイッチ。
(項目5)
上記クレジットカウンタは、上記スイッチのクレジットベースフロー制御メカニズムの一部であり、
上記信号は、上記送信ポイントに対し、データが上記選択されたキューから移動されたことを示す、項目3に記載のスイッチ。
(項目6)
上記複数のキューバッファ、上記複数のキューおよび上記共有バッファは、キューポイントを形成し、予め定められた閾値は、上記送信ポイントと上記キューポイントとの間のラウンドトリップ送信時間に基づく、項目3に記載のスイッチ。
(項目7)
上記クレジットカウンタは、上記送信ポイントが上記選択されたキューバッファ内の利用可能な領域の量をモニタリングできるようにする送信ポイントクレジットカウンタであり、上記スイッチはさらに、上記選択されたキューに関連付けられたローカルクレジットカウンタを有し、
上記キューポイントコントローラはさらに、上記ローカルクレジットカウンタに、上記送信ポイントクレジットカウンタを模倣させて、上記キューポイントコントローラが、上記信号を上記送信ポイントに送信するときを判断できるようにする、項目3に記載のスイッチ。
(項目8)
上記キューポイントコントローラはさらに、
上記共有バッファの前に割り当てられた部分が必要かを判断し、
上記割り当てられた部分がこれ以上必要ではないとの判断に応答して、上記共有バッファの上記前に割り当てられた部分を解放する、項目7に記載のスイッチ。
(項目9)
上記共有バッファの上記前に割り当てられた部分がこれ以上必要ではないと判断することは、上記共有バッファの上記前に割り当てられた部分が空であることの指標、および、
上記選択されたキューバッファが空であることの指標、
上記共有バッファの前に割り当てられた別の部分が、予め定められた閾値より大きいか、またはそれに等しい利用可能な領域の量を有することの指標、または
上記共有バッファの前に割り当てられた別の部分が、ローカルカウンタの値に等しいか、またはそれより大きい利用可能な領域の量を有することの指標、に基づく、項目8に記載のスイッチ。
(項目10)
上記送信ポイントクレジットカウンタおよび上記ローカルクレジットカウンタは、上記スイッチのリセットに応答して、上記選択されたキューバッファのサイズにリセットされる、項目9に記載のスイッチ。
(項目11)
上記複数のキューバッファ、上記複数のキューおよび上記共有バッファは、キューポイントを形成し、上記送信ポイントは、上記スイッチの別のキューポイントである、項目1に記載のスイッチ。
(項目12)
上記複数のキューバッファ、上記複数のキューおよび上記共有バッファは、キューポイントを形成し、上記キューポイントは、上記スイッチのサブスイッチの一部である、項目1から11のいずれか一項に記載のスイッチ。
(項目13)
上記スイッチは、1または複数のプロセッサをさらに有する、システムオンチップ(SoC)である、項目1から11のいずれか一項に記載のスイッチ。
(項目14)
スイッチのキューポイントのキューポイントコントローラによって、パケットの少なくとも一部を送信ポイントから受信する段階と、
上記キューポイントコントローラによって、上記キューポイントのキューに関連付けられたキューバッファ内に上記パケットの上記少なくとも一部を格納する段階と、
上記キューポイントコントローラによって、上記キューバッファ内の利用可能な領域を判断する段階と、
上記キューポイントコントローラによって、上記キューバッファ内の上記利用可能な領域に基づいて、共有バッファの少なくとも一部を上記キューに割り当てる段階であって、上記共有バッファは、上記キューポイントの1または複数の追加のキューに関連付けられる、割り当てる段階と、
上記キューポイントコントローラによって、信号を上記送信ポイントに送信して、上記送信ポイントが上記キューに関連付けられたクレジットカウンタをデクリメントすることを防止する、または、上記送信ポイントに、上記キューに関連付けられた上記クレジットカウンタをインクリメントさせる段階と、を備える、スイッチを動作させる方法。
(項目15)
上記キューバッファ内の判断された上記利用可能な領域の量に基づいて割り当てる段階は、上記キューバッファ内の上記利用可能な領域の量が、利用可能な領域の予め定められた閾値に等しいか、またはそれより小さいかに基づく、項目14に記載の方法。
(項目16)
上記クレジットカウンタは、上記スイッチのクレジットベースフロー制御メカニズムの一部であり、
上記信号は、データが上記キューから移動されることを示す、項目15に記載の方法。
(項目17)
上記予め定められた閾値は、上記送信ポイントと上記キューポイントとの間のラウンドトリップ送信時間に基づく、項目15に記載の方法。
(項目18)
上記クレジットカウンタは、上記送信ポイントが上記キューバッファ内の利用可能な領域の量をモニタリングできるようにする送信ポイントクレジットカウンタであり、上記方法はさらに、
上記キューポイントコントローラによって、ローカルクレジットカウンタに、上記送信ポイントクレジットカウンタを模倣させる段階と、
上記キューポイントコントローラによって、上記ローカルクレジットカウンタの値に少なくとも部分的に基づいて、上記信号を上記送信ポイントに送信するときを判断する段階と、を備える、項目15から17のいずれか一項に記載の方法。
(項目19)
上記スイッチのリセットに応答して、上記ローカルクレジットカウンタを、上記キューバッファのサイズにリセットする段階をさらに備える、項目18に記載の方法。
(項目20)
1または複数の非一時的コンピュータ可読媒体であって、上記1または複数の非一時的コンピュータ可読媒体は自身に格納された命令を備え、上記命令は、スイッチのキューポイントのキューポイントコントローラに、上記キューポイントコントローラによる実行に応答して、
パケットの少なくとも一部を送信ポイントから受信させ、
上記キューポイントのキューに関連付けられたキューバッファ内に上記パケットの上記少なくとも一部を格納させ、
上記キューバッファ内の利用可能な領域の量に基づいて、共有バッファの少なくとも一部を上記キューに割り当てさせ、上記共有バッファは、上記キューポイントの1または複数の追加のキューに関連付けられており、
信号を上記送信ポイントに送信させ、上記送信ポイントが上記キューに関連付けられたクレジットカウンタをデクリメントすることを防止する、または、上記送信ポイントに、上記キューに関連付けられた上記クレジットカウンタをインクリメントさせる、コンピュータ可読媒体。
(項目21)
上記キューバッファ内の上記利用可能な領域の量に基づいて割り当てさせることは、上記キューバッファ内の上記利用可能な領域の量が、利用可能な領域の予め定められた閾値に等しいか、またはそれより小さいかに基づく、項目20に記載のコンピュータ可読媒体。
(項目22)
上記クレジットカウンタは、上記スイッチのクレジットベースフロー制御メカニズムの一部であり、
上記信号は、データが上記キューから移動されたことを示す、項目21に記載のコンピュータ可読媒体。
(項目23)
上記予め定められた閾値は、上記送信ポイントと上記キューポイントとの間のラウンドトリップ送信時間に基づく、項目21に記載のコンピュータ可読媒体。
(項目24)
上記クレジットカウンタは、上記送信ポイントが、上記キューバッファ内の利用可能な領域の量をモニタリングできるようにする送信ポイントクレジットカウンタであり、
上記命令は、上記キューポイントコントローラによる実行に応答して、さらに、上記キューポイントコントローラに、
ローカルクレジットカウンタに、上記送信ポイントクレジットカウンタを模倣させるようにさせ、
上記ローカルクレジットカウンタの値に少なくとも部分的に基づいて、上記信号を上記送信ポイントに送信するときを判断させる、項目21から23のいずれか一項に記載のコンピュータ可読媒体。
(項目25)
上記命令は、上記キューポイントコントローラによる実行に応答して、さらに、上記キューポイントコントローラに、
上記スイッチのリセットに応答して、上記ローカルクレジットカウンタを上記キューバッファのサイズにリセットさせる、項目24に記載のコンピュータ可読媒体。

Claims (25)

  1. パケットをルーティングするためのスイッチであって、
    複数のキューバッファと、
    前記複数のキューバッファにそれぞれ関連付けられた複数のキューと、
    共有バッファと、
    前記複数のキューバッファと前記共有バッファとに連結されたキューポイントコントローラと、を備え、
    前記キューポイントコントローラは、
    前記複数のキューのうちの選択されたキューに宛てられたパケットの一部を送信ポイントから受信し、
    前記選択されたキューに関連付けられた、前記複数のキューバッファのうちの選択されたキューバッファ内の利用可能な領域の量を判断し、
    前記選択されたキューバッファ内の判断された前記利用可能な領域の量に基づいて、前記共有バッファの少なくとも一部を、前記選択されたキューに割り当て、
    前記共有バッファの前記少なくとも一部は前記送信ポイントに不可視である、スイッチ。
  2. 前記選択されたキューバッファ内の判断された前記利用可能な領域の量に基づいて、前記共有バッファの少なくとも一部を、前記選択されたキューに割り当てることは、前記選択されたキューバッファ内の前記利用可能な領域の量が、利用可能な領域の閾値に等しいか、またはそれより小さいかに基づく、請求項1に記載のスイッチ。
  3. 前記選択されたキューは、ネットワークの前記スイッチの1または複数の出力ポートに連結され、
    前記パケットの前記一部は、前記1または複数の出力ポートのうちのある出力ポートに宛てられ、
    前記キューポイントコントローラはさらに、
    前記パケットの前記一部を前記共有バッファの前記少なくとも一部に格納し、
    前記共有バッファの前記少なくとも一部が前記送信ポイントに対し不可視となり得るように、信号を前記送信ポイントに送信し、
    前記信号は、
    前記送信ポイントが、前記選択されたキューに関連付けられたクレジットカウンタをデクリメントすることを防止する、または
    前記送信ポイントに、前記選択されたキューに関連付けられた前記クレジットカウンタをインクリメントさせる、請求項1に記載のスイッチ。
  4. 前記共有バッファの前記少なくとも一部のサイズは、前記パケットのサイズに基づく、請求項3に記載のスイッチ。
  5. 前記クレジットカウンタは、前記スイッチのクレジットベースフロー制御メカニズムの一部であり、
    前記信号は、前記送信ポイントに対し、データが前記選択されたキューから移動されたことを示す、請求項3に記載のスイッチ。
  6. 前記複数のキューバッファ、前記複数のキューおよび前記共有バッファは、キューポイントを形成し、予め定められた閾値は、前記送信ポイントと前記キューポイントとの間のラウンドトリップ送信時間に基づく、請求項3に記載のスイッチ。
  7. 前記クレジットカウンタは、前記送信ポイントが前記選択されたキューバッファ内の利用可能な領域の量をモニタリングできるようにする送信ポイントクレジットカウンタであり、前記スイッチはさらに、前記選択されたキューに関連付けられたローカルクレジットカウンタを有し、
    前記キューポイントコントローラはさらに、前記ローカルクレジットカウンタに、前記送信ポイントクレジットカウンタを模倣させて、前記キューポイントコントローラが、前記信号を前記送信ポイントに送信するときを判断できるようにする、請求項3に記載のスイッチ。
  8. 前記キューポイントコントローラはさらに、
    前記共有バッファの前に割り当てられた部分が必要かを判断し、
    前記割り当てられた部分がこれ以上必要ではないとの判断に応答して、前記共有バッファの前記前に割り当てられた部分を解放する、請求項7に記載のスイッチ。
  9. 前記共有バッファの前記前に割り当てられた部分がこれ以上必要ではないと判断することは、前記共有バッファの前記前に割り当てられた部分が空であることの指標、および、
    前記選択されたキューバッファが空であることの指標、
    前記共有バッファの前に割り当てられた別の部分が、予め定められた閾値より大きいか、またはそれに等しい利用可能な領域の量を有することの指標、または
    前記共有バッファの前に割り当てられた別の部分が、ローカルカウンタの値に等しいか、またはそれより大きい利用可能な領域の量を有することの指標、に基づく、請求項8に記載のスイッチ。
  10. 前記送信ポイントクレジットカウンタおよび前記ローカルクレジットカウンタは、前記スイッチのリセットに応答して、前記選択されたキューバッファのサイズにリセットされる、請求項9に記載のスイッチ。
  11. 前記複数のキューバッファ、前記複数のキューおよび前記共有バッファは、キューポイントを形成し、前記送信ポイントは、前記スイッチの別のキューポイントである、請求項1に記載のスイッチ。
  12. 前記複数のキューバッファ、前記複数のキューおよび前記共有バッファは、キューポイントを形成し、前記キューポイントは、前記スイッチのサブスイッチの一部である、請求項1から11のいずれか一項に記載のスイッチ。
  13. 前記スイッチは、1または複数のプロセッサをさらに有する、システムオンチップ(SoC)である、請求項1から11のいずれか一項に記載のスイッチ。
  14. スイッチのキューポイントのキューポイントコントローラによって、パケットの少なくとも一部を送信ポイントから受信する段階と、
    前記キューポイントコントローラによって、前記キューポイントのキューに関連付けられたキューバッファ内に前記パケットの前記少なくとも一部を格納する段階と、
    前記キューポイントコントローラによって、前記キューバッファ内の利用可能な領域を判断する段階と、
    前記キューポイントコントローラによって、前記キューバッファ内の前記利用可能な領域に基づいて、共有バッファの少なくとも一部を前記キューに割り当てる段階であって、前記共有バッファは、前記キューポイントの1または複数の追加のキューに関連付けられる、割り当てる段階と、
    前記キューポイントコントローラによって、信号を前記送信ポイントに送信して、前記送信ポイントが前記キューに関連付けられたクレジットカウンタをデクリメントすることを防止する、または、前記送信ポイントに、前記キューに関連付けられた前記クレジットカウンタをインクリメントさせる段階と、を備える、スイッチを動作させる方法。
  15. 前記キューバッファ内の判断された前記利用可能な領域の量に基づいて割り当てる段階は、前記キューバッファ内の前記利用可能な領域の量が、利用可能な領域の予め定められた閾値に等しいか、またはそれより小さいかに基づく、請求項14に記載の方法。
  16. 前記クレジットカウンタは、前記スイッチのクレジットベースフロー制御メカニズムの一部であり、
    前記信号は、データが前記キューから移動されることを示す、請求項15に記載の方法。
  17. 前記予め定められた閾値は、前記送信ポイントと前記キューポイントとの間のラウンドトリップ送信時間に基づく、請求項15に記載の方法。
  18. 前記クレジットカウンタは、前記送信ポイントが前記キューバッファ内の利用可能な領域の量をモニタリングできるようにする送信ポイントクレジットカウンタであり、前記方法はさらに、
    前記キューポイントコントローラによって、ローカルクレジットカウンタに、前記送信ポイントクレジットカウンタを模倣させる段階と、
    前記キューポイントコントローラによって、前記ローカルクレジットカウンタの値に少なくとも部分的に基づいて、前記信号を前記送信ポイントに送信するときを判断する段階と、を備える、請求項15から17のいずれか一項に記載の方法。
  19. 前記スイッチのリセットに応答して、前記ローカルクレジットカウンタを、前記キューバッファのサイズにリセットする段階をさらに備える、請求項18に記載の方法。
  20. 1または複数の非一時的コンピュータ可読媒体であって、前記1または複数の非一時的コンピュータ可読媒体は自身に格納された命令を備え、前記命令は、スイッチのキューポイントのキューポイントコントローラに、前記キューポイントコントローラによる実行に応答して、
    パケットの少なくとも一部を送信ポイントから受信させ、
    前記キューポイントのキューに関連付けられたキューバッファ内に前記パケットの前記少なくとも一部を格納させ、
    前記キューバッファ内の利用可能な領域の量に基づいて、共有バッファの少なくとも一部を前記キューに割り当てさせ、前記共有バッファは、前記キューポイントの1または複数の追加のキューに関連付けられており、
    信号を前記送信ポイントに送信させ、前記送信ポイントが前記キューに関連付けられたクレジットカウンタをデクリメントすることを防止する、または、前記送信ポイントに、前記キューに関連付けられた前記クレジットカウンタをインクリメントさせる、コンピュータ可読媒体。
  21. 前記キューバッファ内の前記利用可能な領域の量に基づいて割り当てさせることは、前記キューバッファ内の前記利用可能な領域の量が、利用可能な領域の予め定められた閾値に等しいか、またはそれより小さいかに基づく、請求項20に記載のコンピュータ可読媒体。
  22. 前記クレジットカウンタは、前記スイッチのクレジットベースフロー制御メカニズムの一部であり、
    前記信号は、データが前記キューから移動されたことを示す、請求項21に記載のコンピュータ可読媒体。
  23. 前記予め定められた閾値は、前記送信ポイントと前記キューポイントとの間のラウンドトリップ送信時間に基づく、請求項21に記載のコンピュータ可読媒体。
  24. 前記クレジットカウンタは、前記送信ポイントが、前記キューバッファ内の利用可能な領域の量をモニタリングできるようにする送信ポイントクレジットカウンタであり、
    前記命令は、前記キューポイントコントローラによる実行に応答して、さらに、前記キューポイントコントローラに、
    ローカルクレジットカウンタに、前記送信ポイントクレジットカウンタを模倣させるようにさせ、
    前記ローカルクレジットカウンタの値に少なくとも部分的に基づいて、前記信号を前記送信ポイントに送信するときを判断させる、請求項21から23のいずれか一項に記載のコンピュータ可読媒体。
  25. 前記命令は、前記キューポイントコントローラによる実行に応答して、さらに、前記キューポイントコントローラに、
    前記スイッチのリセットに応答して、前記ローカルクレジットカウンタを前記キューバッファのサイズにリセットさせる、請求項24に記載のコンピュータ可読媒体。
JP2017526669A 2014-12-24 2014-12-24 スイッチ内のデータをバッファリングするための装置および方法 Active JP6517934B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2014/072369 WO2016105414A1 (en) 2014-12-24 2014-12-24 Apparatus and method for buffering data in a switch

Publications (2)

Publication Number Publication Date
JP2018503995A true JP2018503995A (ja) 2018-02-08
JP6517934B2 JP6517934B2 (ja) 2019-05-22

Family

ID=56151210

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017526669A Active JP6517934B2 (ja) 2014-12-24 2014-12-24 スイッチ内のデータをバッファリングするための装置および方法

Country Status (5)

Country Link
US (1) US10454850B2 (ja)
EP (1) EP3238395A4 (ja)
JP (1) JP6517934B2 (ja)
CN (1) CN107005494B (ja)
WO (1) WO2016105414A1 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10283091B2 (en) * 2014-10-13 2019-05-07 Microsoft Technology Licensing, Llc Buffer optimization
US10250530B2 (en) 2016-03-08 2019-04-02 Mellanox Technologies Tlv Ltd. Flexible buffer allocation in a network switch
US10205683B2 (en) 2016-03-28 2019-02-12 Mellanox Technologies Tlv Ltd. Optimizing buffer allocation for network flow control
US10387074B2 (en) * 2016-05-23 2019-08-20 Mellanox Technologies Tlv Ltd. Efficient use of buffer space in a network switch
US10601714B2 (en) 2016-06-28 2020-03-24 Mellanox Technologies Tlv Ltd. Adaptive flow prioritization
KR101716862B1 (ko) * 2016-10-04 2017-03-15 (주)볼트마이크로 영상데이터 관리 장치 및 방법
US10944694B2 (en) 2016-12-06 2021-03-09 Hewlett Packard Enterprise Development Lp Predictive arbitration circuit
US10721185B2 (en) 2016-12-06 2020-07-21 Hewlett Packard Enterprise Development Lp Age-based arbitration circuit
US10521121B2 (en) * 2016-12-29 2019-12-31 Intel Corporation Apparatus, system and method for throttling a rate at which commands are accepted in a storage device
US10389646B2 (en) 2017-02-15 2019-08-20 Mellanox Technologies Tlv Ltd. Evading congestion spreading for victim flows
US10645033B2 (en) 2017-03-27 2020-05-05 Mellanox Technologies Tlv Ltd. Buffer optimization in modular switches
US10601723B2 (en) * 2018-04-12 2020-03-24 Advanced Micro Devices, Inc. Bandwidth matched scheduler
CN108833301A (zh) * 2018-05-30 2018-11-16 杭州迪普科技股份有限公司 一种报文处理方法和装置
US10693811B2 (en) * 2018-09-28 2020-06-23 Hewlett Packard Enterprise Development Lp Age class based arbitration
CN109922015A (zh) * 2019-01-23 2019-06-21 珠海亿智电子科技有限公司 一种多路数据流共享缓冲器方法和系统
US11005770B2 (en) 2019-06-16 2021-05-11 Mellanox Technologies Tlv Ltd. Listing congestion notification packet generation by switch
US10999221B2 (en) 2019-07-02 2021-05-04 Mellanox Technologies Tlv Ltd. Transaction based scheduling
US11470010B2 (en) 2020-02-06 2022-10-11 Mellanox Technologies, Ltd. Head-of-queue blocking for multiple lossless queues
US20220114440A1 (en) * 2020-10-14 2022-04-14 Google Llc Queue Allocation in Machine Learning Accelerators
US11928360B2 (en) * 2020-11-20 2024-03-12 Western Digital Technologies, Inc. Command slot management for memory devices
US11860799B2 (en) * 2021-12-20 2024-01-02 Micron Technologies, Inc. Memory request modulation
US11973696B2 (en) 2022-01-31 2024-04-30 Mellanox Technologies, Ltd. Allocation of shared reserve memory to queues in a network device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09162884A (ja) * 1995-12-07 1997-06-20 Fujitsu Ltd Atmセル廃棄率低減方式
US20110075555A1 (en) * 2009-09-29 2011-03-31 Ziegler Michael L Consistency checking for credit-based control of data communications

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6539024B1 (en) * 1999-03-26 2003-03-25 Alcatel Canada Inc. Method and apparatus for data buffer management in a communications switch
US20020141427A1 (en) * 2001-03-29 2002-10-03 Mcalpine Gary L. Method and apparatus for a traffic optimizing multi-stage switch fabric network
US6892285B1 (en) * 2002-04-30 2005-05-10 Cisco Technology, Inc. System and method for operating a packet buffer
US7408875B2 (en) 2004-04-09 2008-08-05 International Business Machines Corporation System and program product for actively managing central queue buffer allocation
US7948880B2 (en) * 2004-10-29 2011-05-24 Broadcom Corporation Adaptive dynamic thresholding mechanism for link level flow control scheme
US7643477B2 (en) 2005-08-24 2010-01-05 Intel Corporation Buffering data packets according to multiple flow control schemes
US20070140282A1 (en) * 2005-12-21 2007-06-21 Sridhar Lakshmanamurthy Managing on-chip queues in switched fabric networks
US20110262779A1 (en) 2010-04-23 2011-10-27 Hossein Maleki Electrochemical Cell with Reduced Magnetic Field Emission and Corresponding Devices
US8665725B2 (en) * 2011-12-20 2014-03-04 Broadcom Corporation System and method for hierarchical adaptive dynamic egress port and queue buffer management
US9729459B2 (en) 2012-11-19 2017-08-08 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for credit-based link level flow control
US9467522B2 (en) * 2013-07-19 2016-10-11 Broadcom Corporation Ingress based headroom buffering for switch architectures

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09162884A (ja) * 1995-12-07 1997-06-20 Fujitsu Ltd Atmセル廃棄率低減方式
US20110075555A1 (en) * 2009-09-29 2011-03-31 Ziegler Michael L Consistency checking for credit-based control of data communications

Also Published As

Publication number Publication date
CN107005494B (zh) 2021-03-19
EP3238395A1 (en) 2017-11-01
US10454850B2 (en) 2019-10-22
WO2016105414A1 (en) 2016-06-30
EP3238395A4 (en) 2018-07-25
US20170295112A1 (en) 2017-10-12
CN107005494A (zh) 2017-08-01
JP6517934B2 (ja) 2019-05-22

Similar Documents

Publication Publication Date Title
JP6517934B2 (ja) スイッチ内のデータをバッファリングするための装置および方法
US11252087B2 (en) Data packet forwarding method, network adapter, host device, and computer system
CN105511954B (zh) 一种报文处理方法及装置
EP3586494B1 (en) Load balancing in distributed computing systems
US11736402B2 (en) Fast data center congestion response based on QoS of VL
CN108337188B (zh) 通信量和负载感知动态队列管理
US11321256B2 (en) Persistent kernel for graphics processing unit direct memory access network packet processing
US20180285294A1 (en) Quality of service based handling of input/output requests method and apparatus
CN112217746A (zh) 云计算系统中报文处理的方法、主机和系统
US10664945B2 (en) Direct memory access for graphics processing unit packet processing
EP2902914B1 (en) Data transmission method and device
EP3253027A1 (en) Resource allocation method and apparatus for virtual machines
US9258246B2 (en) Integrated circuit device and methods for performing cut-through forwarding
US11449456B2 (en) System and method for scheduling sharable PCIe endpoint devices
CN111371694B (zh) 一种分流方法、装置和系统、处理设备和存储介质
CN111240813A (zh) 一种dma调度方法、装置和计算机可读存储介质
US9344376B2 (en) Quality of service in multi-tenant network
JP2009239374A (ja) 仮想計算機システム及びパケット送信制御方法並びにそれに用いるネットワークインターフェースカード
KR101634672B1 (ko) 네트워크 인터페이스 가상화 장치, 방법 및 이를 실행하기 위한 컴퓨터 프로그램
US9330036B2 (en) Interrupt reduction by dynamic application buffering
KR20160144688A (ko) 큐를 이용한 smp 가상 머신 이벤트 라우터 및 방법
KR101620995B1 (ko) 가상실행 환경에서의 패킷 처리 방법 및 장치
EP3082298A1 (en) Slave device and method for controlling the same
KR20160083483A (ko) 우선순위에 기반한 가상 데스크톱의 입출력 제어 방법 및 그에 따른 가상 데스크톱 제공 서버

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171219

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190301

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190418

R150 Certificate of patent or registration of utility model

Ref document number: 6517934

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250