JP7138190B2 - ネットワークスイッチのキュー - Google Patents

ネットワークスイッチのキュー Download PDF

Info

Publication number
JP7138190B2
JP7138190B2 JP2020555898A JP2020555898A JP7138190B2 JP 7138190 B2 JP7138190 B2 JP 7138190B2 JP 2020555898 A JP2020555898 A JP 2020555898A JP 2020555898 A JP2020555898 A JP 2020555898A JP 7138190 B2 JP7138190 B2 JP 7138190B2
Authority
JP
Japan
Prior art keywords
queue
entries
bit
entry
memory
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
JP2020555898A
Other languages
English (en)
Other versions
JP2021521529A (ja
JPWO2019199817A5 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2021521529A publication Critical patent/JP2021521529A/ja
Publication of JPWO2019199817A5 publication Critical patent/JPWO2019199817A5/ja
Application granted granted Critical
Publication of JP7138190B2 publication Critical patent/JP7138190B2/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • 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/28Flow control; Congestion control in relation to timing considerations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/52Queue scheduling by attributing bandwidth to queues
    • H04L47/522Dynamic queue service slot or variable bandwidth allocation
    • H04L47/524Queue skipping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/52Queue scheduling by attributing bandwidth to queues
    • H04L47/525Queue scheduling by attributing bandwidth to queues by redistribution of residual bandwidth
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/56Queue scheduling implementing delay-aware scheduling
    • H04L47/564Attaching a deadline to packets, e.g. earliest due date first
    • H04L47/566Deadline varies as a function of time spent in the queue
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/6235Variable service order
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/624Altering the ordering of packets in an individual queue
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9005Buffering arrangements using dynamic buffer space allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9031Wraparound memory, e.g. overrun or underrun detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L12/5602Bandwidth control in ATM Networks, e.g. leaky bucket
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
    • H04L2012/5679Arbitration or scheduling

Landscapes

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

Description

コンピューティングシステムにおいて、いくつかのタイプのアプリケーションは、他のアプリケーションよりも並列処理及び共有メモリをうまく利用する機能を実行する。このようなアプリケーションの例には、機械学習アプリケーション、エンターテインメント及びリアルタイムアプリケーション、並びに、ビジネス、科学、医療及び他のアプリケーションが含まれる。いくつかのプロセッサアーキテクチャは、複数の処理ユニット(例えばCPU、GPU等)又は処理コアを含むが、メモリに接続された1つ又は2つの追加の処理ユニット又はコアは、所望のレベルのパフォーマンスを提供するのに十分なレベルの並列処理を必ずしも提供しない。さらに、従来のバスベース及びクロスバー相互接続アーキテクチャは、一般に、処理ユニットの数が増えるほど拡張性がなくなる。その結果、処理ユニットの数が増えるにつれて、処理ユニットへの命令及びデータの供給の遅延も増加する。マルチプロセッシングユニットシステムが所望のレベルのパフォーマンスをサポートするために、いくつかのシステムは、バスベース及びクロスバー相互接続アーキテクチャからネットワークオンチップ(NoC)アーキテクチャに移行している。NoCアーキテクチャは、システムレベルのネットワーク技術を使用して、オンチップトラフィックを転送する。バスベースのアーキテクチャによって提供される階層化及びセグメント化されたアプローチとは対照的に、NoCアーキテクチャは、データを転送するためにより均質で拡張可能なスイッチファブリックネットワークを提供する。適切なスループットを維持するために、NoCアーキテクチャのNoCスイッチは、その内部構造を介してクロックサイクル毎に多くのパケットを処理することが期待される。
上記を考慮して、オンチップネットワークトラフィックを効率的に転送する方法及びシステムが望まれている。
添付図面と共に以下の説明を参照することによって、本明細書に記載された方法及びメカニズムの利点をより良く理解することができる。
コンピューティングシステムの一実施形態のブロック図である。 ネットワークオンチップ(NoC)スイッチの一実施形態のブロック図である。 ネットワークスイッチのスループットを管理する方法の一実施形態のフロー図である。 折り畳み可能(collapsible)なキュー更新論理(ロジック)の一実施形態のブロック図である。 変換ビットベクトル論理の一実施形態のブロック図である。 変換キューエントリ論理の一実施形態のブロック図である。 キューを折り畳むためのシフト量を決定する方法の一実施形態のフロー図である。 キューを折り畳む方法の一実施形態のフロー図である。 キュー状態情報の折り畳みの一実施形態のブロック図である。
本発明は、様々な変形及び代替形態を許容可能であるが、具体的な実施形態を図面に例示し、本明細書において詳細に説明する。しかしながら、図面及びその詳細な説明は、本発明を開示された特定の形態に限定することを意図するものではなく、逆に、本発明は、添付の特許請求の範囲によって定義される本発明の範囲内にある全ての変形、均等物及び代替物を包含することを理解されたい。
以下の説明では、本明細書に提示される方法及びメカニズムの十分な理解を提供するために、多くの具体的な詳細が記載されている。しかしながら、当業者は、これらの具体的な詳細無しに様々な実施形態が実施され得ることを認識すべきである。場合によっては、本明細書で説明するアプローチを曖昧にすることを避けるために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図に示される要素は、必ずしも縮尺通りに描かれていないことが理解されよう。例えば、いくつかの要素の寸法は、他の要素と比較して誇張される場合がある。
オンチップネットワークトラフィックを効率的に転送する様々なシステム、装置、方法及びコンピュータ可読媒体が開示されている。様々な実装形態では、コンピューティングシステムは、1つ以上のクライアントを含む。このようなクライアントの例には、汎用中央処理装置(CPU)、グラフィックス処理装置(GPU)、アクセラレーテッド処理装置(APU)、マルチメディアエンジン等が含まれる。これらの1つ以上のクライアントは、プログラム命令の処理中に、メモリに記憶されたデータへのアクセス要求を生成する。いくつかの実施形態では、複数のクライアントが、システムオンチップ(SOC)等の単一のダイ内で接続されている。
様々な実装形態では、コンピューティングシステムは、クライアント間、及び、メモリとクライアントと間でデータを転送するための通信ネットワーク(又は、「ファブリック」)を含む。様々な実装形態では、通信ファブリックは、所定のソースからデータを受信し、受信したデータを所定の宛先に伝達するように構成されたエンティティとしてみなし得るネットワークスイッチを含む。所望のスループットを維持するために、ネットワークスイッチは、最大で、クロックサイクルで受信したパケット数と等しいクロックサイクル当たりのパケット数を処理する。所定のクロックサイクルで受信したパケット数は、ネットワークスイッチの読み取りポートの数と等しい(それ以下である)。データを受信する読み取りポートの数は、データを伝達するための書き込みポートの数と等しい。この読み取りポート及び書き込みポート(又は、スイッチポート)の数は、ネットワークスイッチの「基数(radix)」とも呼ばれる。したがって、8つの読み取りポートを備えたネットワークスイッチの基数は、8になる。
いくつかの実装形態では、ネットワークスイッチは、別々の入力及び出力データ記憶構造ではなく、集中型データ記憶構造を含む。集中型データ記憶構造により、データのバッファリングにおける冗長性が回避される。冗長なバッファリングは、オンダイ領域及び消費電力の両方を増加させる。ネットワークスイッチは、受信したパケットに対応するメタデータを、対応するパケットのエイジ(age)がキューエントリ位置に対応する単一の集中型折り畳み可能キューに記憶する。ここでのエイジとは、スイッチがパケットを受信した時間を指す。したがって、パケットのエイジは暗黙的であり、エイジの表示を個別に記憶する必要はない。パケットのペイロード(データ)は、メタデータとは別のメモリ構造に記憶される。このようにして、折り畳み可能なキュー内のメタデータの折り畳み中に、比較的大量のデータがシフトされることもない。
様々な実施形態では、ネットワークスイッチは、割り当て解除のために、折り畳み可能なキュー内のスパース又は非連続キューエントリを選択する制御論理を含む。2つの連続するキューエントリは互いに隣接して配置されるが、2つのスパースキューエントリの間には、1つ以上の他のキューエントリが配置される。したがって、割り当て解除のために選択された2つのスパースキューエントリの間には、割り当て解除のために選択されていない1つ以上の他のキューエントリがある。フルスループットを維持するために、各クロックサイクルで割り当て解除のために選択されたキューエントリの数は、ネットワークスイッチの基数に等しい(それ以下である)。
ネットワークスイッチの制御論理は、選択されたキューエントリの各々を配置し、割り当て解除する。また、制御論理は、割り当てられたままのキューエントリ(remaining allocated queue entries)が連続するように、割り当てられたままのキューエントリをキューの第1の端に向けてシフトする。このシフトは、「折り畳み」とも呼ばれる。以下の説明では、第1の端がキューの先頭と呼ばれ、他方の端がキューの末尾と呼ばれる。このように、キューの先頭に向けてシフトされる割り当てられたままのキューエントリは、シフト操作後に、キューの先頭に連続して配置される。シフト操作後に割り当て可能なエントリは、キューの末尾の連続したエントリに配置される。
次に、図1を参照すると、コンピューティングシステム100の一実施形態の一般化されたブロック図が示されている。図示するように、コンピューティングシステム100は、メモリコントローラ140,142の各々と複数のクライアントとの間にある通信ファブリック110を含む。メモリコントローラ140,142は、メモリ150,152とインターフェースするために使用される。複数のクライアントの例には、中央処理装置(CPU)複合体(complex)160、グラフィックス処理装置(GPU)162及びハブ164である。ハブ164は、マルチメディアエンジン166との通信に使用される。いくつかの実施形態では、1つ以上のハブが、マルチメディアプレーヤ(すなわち、マルチメディアエンジン166用のハブ164)、ディスプレイユニット、又は、その他とインターフェースするために使用される。このような場合、ハブは、コンピューティングシステム100内のクライアントである。各ハブには、様々な通信プロトコルに従ってトラフィックを処理するための制御論理及び記憶要素がさらに含まれている。3つのクライアントが示されているが、他の実施形態では、コンピューティングシステム100は、任意の数のクライアントと、他のタイプのクライアント(例えば、ディスプレイユニット、1つ以上の入力/出力(I/O)周辺機器等)と、を含む。
いくつかの実施形態では、コンピューティングシステム100は、図示した各コンポーネントが単一の半導体ダイ上で統合されたシステムオンチップ(SoC)である。他の実施形態では、コンポーネントは、システムインパッケージ(SiP)又はマルチチップモジュール(MCM)内の個々のダイである。様々な実施形態では、CPU160、GPU162及びマルチメディアエンジン166は、スマートフォン、タブレットコンピュータ、ゲーム機、スマートウォッチ、デスクトップコンピュータ、バーチャルリアリティヘッドセット等で使用される。CPU160、GPU162及びマルチメディアエンジン166は、オンチップネットワークトラフィックを生成可能なクライアントの例である。ネットワークトラフィックの例には、メモリアクセス要求、メモリアクセス応答、及び、クライアント間の他のネットワークメッセージが含まれる。
トラフィックを効率的にルーティングするために、様々な実施形態では、通信ファブリック110は、ネットワークスイッチ170~178を含むルーティングネットワーク120を使用する。いくつかの実施形態では、ネットワークスイッチ170~178は、ネットワークオンチップ(NoC)スイッチである。実施形態では、ルーティングネットワーク120は、ポイントツーポイント(P2P)リングトポロジにおいて複数のネットワークスイッチ170~178を使用する。他の実施形態では、ルーティングネットワーク120は、メッシュトポロジにおいてプログラム可能なルーティングテーブルを備えたネットワークスイッチ170~178を使用する。さらに他の実施形態では、ルーティングネットワーク120は、トポロジを組み合わせてネットワークスイッチ170~178を使用する。いくつかの実施形態では、ルーティングネットワーク120は、コンピューティングシステム100内のワイヤの数を減らすために1つ以上のバスを含む。例えば、インターフェース130~132のうち1つ以上は、ルーティングネットワーク120内の単一のバス上で読み取り応答及び書き込み応答を送信する。
様々な実施形態において、通信ファブリック110(「ファブリック」)は、CPU160、GPU162及びマルチメディアエンジン166との間でトラフィックを転送する。また、ファブリック110は、メモリ150,152と、CPU160、GPU162及びマルチメディアエンジン166等のクライアントとの間でトラフィックを転送する。ネットワークトラフィックが、要求されたデータを取得するためのネットワークメッセージを含む場合、インターフェース112,114,116,130,132及びネットワークスイッチ170~178のうち1つ以上は、要求されたデータのターゲットアドレスを変換する。
様々な実施形態では、ファブリック110及びルーティングネットワーク120のうち1つ以上は、要求、応答及び制御パラメータを記憶するための状態レジスタ、制御レジスタ及び他の記憶要素を含む。いくつかの実施形態では、ファブリック110は、通信、データ通信、及び、1つ以上のバスを介してトラフィックをルーティングするためのネットワークプロトコルをサポートする制御論理を含む。いくつかの実施形態では、ファブリック110は、アドレスフォーマット、インターフェース信号、及び、同期/非同期クロックドメインの使用をサポートする制御論理を含む。
フルスループットを維持するために、いくつかの実施形態では、ネットワークスイッチ170~178の各々は、スイッチ内の読み取りポートの数に等しいクロックサイクル当たりパケット数を処理する。様々な実施形態では、スイッチ内の読み取りポートの数は、スイッチ内の書き込みポートの数と等しい。この読み取りポートの数は、ネットワークスイッチの基数とも呼ばれる。ネットワークスイッチ170~178のうち1つ以上が、クロックサイクル当たりの基数よりも少ない数のパケットを処理する場合、ルーティングネットワーク120の帯域幅は、最大値未満である。したがって、ネットワークスイッチ170~178は、クロックサイクル当たりのパケットの基数に等しい処理速度を維持するための記憶構造及び制御論理を含む。
いくつかの実施形態では、ネットワークスイッチ170~178は、別々の入力及び出力記憶構造ではなく、集中型記憶構造を含む。1つ以上のネットワークスイッチ170~178の集中型記憶構造は、オンダイ領域及び電力消費の両方の増加につながるバッファリングの冗長性を回避する。さらに、記憶構造を別々の入力記憶構造と出力記憶構造に分割すると、ネットワークスイッチ内のパケットの存続期間においてパケットのローカルエイジを維持することがさらに複雑になる。対照的に、ネットワークスイッチ170~178は、受信したパケットに対応するメタデータを、パケットのエイジがキュー内のその位置に対応する単一の集中型折り畳み可能なキューに記憶する。したがって、パケットのエイジは暗黙的であり、パケットのエイジの情報を別に記憶する必要がない。パケットのペイロードデータは別のメモリ構造に記憶されるので、折り畳み可能なキューのシフト中に比較的大量のデータがシフトされることはない。
いくつかの実施形態では、1つ以上のネットワークスイッチ170~178は、単一のクロックサイクルでの割り当て解除のために非連続キューエントリを選択する制御論理及び回路を含む。フルスループットを維持するために、割り当て解除のために選択されたキューエントリの数は、最大で、ネットワークスイッチの基数(つまり、単一のクロックサイクルでスイッチが受信可能なパケットの最大数)である。また、制御論理は、割り当て解除のためにキューエントリを識別することに加えて、残りのキューエントリ(割り当て解除されていないもの)を、キューの先頭に向けてシフトする。割り当てられたままのキューエントリの全てが、キューの先頭の連続したエントリに配置される。次に、割り当て可能な全てのキューエントリは、キューの末尾の連続したエントリに配置される。いくつかの実施形態では、1つ以上のネットワークスイッチ170~178の制御論理は、単一のクロックサイクル内でキューの折り畳みを実行する。
インターフェース112~116は、ルーティングネットワーク120とCPU160、GPU162及びマルチメディアエンジン166との間でデータ、要求及び確認応答(acknowledgment responses)を転送するために使用される。インターフェース130~132は、メモリコントローラ140~142とルーティングネットワーク120との間でデータ、要求及び確認応答を転送するために使用される。実施形態において、インターフェース112~116,130~132は、アドレス空間とメモリチャネルとの間のマッピングを有する。様々な実施形態では、インターフェース112~116,130~132及びメモリコントローラ140~142は、機能を提供するアルゴリズムを実装するハードウェア回路及び/又はソフトウェアを含む。
インターフェース112~116は、CPU160、GPU162及びマルチメディアエンジン166との通信プロトコルをサポートする。いくつかの実施形態では、インターフェース112~116は、要求及び応答を記憶するためのキューと、ルーティングネットワーク120に要求を送信する前に受信した要求間を調停するための選択論理と、を含む。また、インターフェース112~116は、パケットを生成し、パケットを復号し、ルーティングネットワーク120との通信をサポートするための論理も含む。いくつかの実施形態では、インターフェース112~116の各々は、図示するように、単一のクライアントと通信する。他の実施形態では、1つ以上のインターフェース112~116は、複数のクライアントと通信し、クライアントを識別する識別子を使用してクライアントとのトラフィックを追跡する。
メモリ150に対して単一のメモリコントローラ140が示されており、メモリ152に対して単一のメモリコントローラ142が示されているが、他の実施形態では、コンピューティングシステム100は、それぞれ1つ以上のメモリチャネルをサポートする複数のメモリコントローラを含む。メモリコントローラ140~142は、要求及び応答を記憶するためのキューを含む。さらに、メモリコントローラ140~142は、バーストモードをサポートするメモリ150~152のタイミング仕様に基づいて、メモリ150~152に送信される要求をグループ化して要求をメモリ150~152に送信する制御論理を含む。
メモリコントローラ140~142は、制御パラメータを記憶するための状態レジスタ及び制御レジスタを含む。さらに、メモリコントローラ140~142は、効率的なアウトオブオーダ処理のために、受信したメモリアクセス要求及び応答を並べ替える論理を含む。並べ替えは、優先度レベル、サービス品質(QoS)パラメータ、メモリアクセス要求若しくは応答のパケットのエイジ、又は、他の考慮事項のうち1つ以上に基づいている。
様々な実施形態では、メモリ150~152は、様々なランダムアクセスメモリ(RAM)のうち何れかを含む。いくつかの実施形態では、メモリ150~152は、データ及び対応するメタデータを同期RAM(SRAM)に記憶する。他の実施形態では、メモリ150~152は、データ及び対応するメタデータを様々なダイナミックRAM(DRAM)のうち1つに記憶する。例えば、実施形態に応じて、メモリ150~152は、データを、従来のDRAM又は互いに積層された複数の三次元(3D)メモリダイに記憶する。
図2を参照すると、ネットワークスイッチ200の一実施形態の一般化されたブロック図が示されている。ネットワークスイッチ200は、バッファ210と、制御キュー220と、パケットメモリ230と、を含む。様々な実施形態では、パケットメモリ230は、受信したパケットのパケットペイロードデータを記憶する。バッファ210は、メモリ232内のエントリのアドレスを記憶し、これは、パケットインデックスとも呼ばれる。図示した例では、バッファ210は、16個のエントリ(0~15)を含む。実施形態では、各パケットインデックスは、メモリ232内のエントリのうち特定のエントリを指す。このような実施形態では、パケットメモリ230は、データを、ダイレクトマップ機構に記憶する。他の実施形態では、パケットメモリ230は、データを、セットアソシエイティブ機構又はフルアソシアティブ機構等の別の機構を使用して記憶する。
いくつかの実施形態では、バッファ210は、インオーダ循環バッファとして管理される。いくつかの実施形態では、読み取りポインタ212及び書き込みポインタ214の各々は、リセット時に同じ値(例えば、バッファエントリ0)に設定される。いくつかの実施形態では、バッファ210のバッファエントリに記憶されたパケットインデックスは、バッファエントリに対応する値にリセットされる。例えば、バッファエントリ0に記憶されているインデックスのリセット値は、0である。同様に、バッファエントリ1に記憶されているインデックスのリセット値は、1である。以下同様である。バッファ210及びパケットメモリ230の各々は、16個のエントリを含むように示されているが、他の実施形態では、バッファ210及びパケットメモリ230の各々は、別の数のエントリを含む。
ネットワークスイッチ200がパケットを受信すると、読み取りポインタ212が指すバッファエントリに記憶されたパケットインデックスがパケットインデックス216として読み取られる。いくつかの実施形態では、複数のパケットが同時に受信され、読み取りポインタ212が指すバッファエントリに記憶されたパケットインデックスから始まる複数のパケットインデックスがバッファ210から読み取られる。実施形態では、バッファ210から読み取られたパケットインデックス216は、パケットメモリ230内の割り当て論理234及び制御キュー220の両方に送信される。いくつかの実施形態では、受信したパケットの数は、バッファ210から読み取られたパケットインデックスの数に等しく、これは、ネットワークスイッチ200のポートの数に等しい。この数は、ネットワークスイッチ200の基数と呼ばれる。図示した実施形態では、基数は、0以外の整数値Nである。実施形態では、読み取りポインタ212は、受信したパケットの数だけ増分される。
実施形態では、割り当て論理234は、何れのメモリエントリが割り当てられているかを決定するためにマルチプレクサを使用する。他の組み合わせ論理も可能であり、考えられる。図示するように、割り当て論理234内のマルチプレクサのデータ入力は、入力されたパケットのペイロードデータを受信する。割り当て論理234内のマルチプレクサの選択ラインは、バッファ210から取得されたパケットインデックス216のデコード値を受信する。デコーダ(図示省略)は、受信したパケットインデックス216をデコードして、割り当てられるメモリエントリ232を選択する。様々な実施形態では、パケットメモリ230は、データ記憶のためにSRAMを使用する。パケットメモリ230に記憶されたパケットのペイロードデータは、メモリエントリ間でシフトしないが、パケットのペイロードデータがネットワークを介した送信のために読み取られるまで、選択されたメモリエントリに残る。
制御キュー220は、パケットインデックス216を受信し、これらを、制御キュー220の利用可能なエントリに記憶する。パケットメモリ230とは対照的に、パケットインデックス216は、何れのキューエントリが割り当てのために選択されるかを決定しない。実施形態では、パケットメモリ230は、受信したパケットのペイロードデータを記憶し、一方、制御キュー220は、受信したパケットのメタデータを記憶する。様々な実施形態では、制御キュー220は、折り畳み可能なキューである。インオーダバッファ210とは対照的に、制御キュー220は、割り当て解除のためのキューエントリを必ずしもインオーダで選択するわけではない。代わりに、制御キュー220は、任意の所望の順序でパケットを選択する。選択は、優先度レベル、サービス品質(QoS)パラメータ、パケットのエイジ等のうち1つ以上に基づいている。いくつかの実施形態では、制御キュー220は、ネットワークスイッチ200のポート毎に1つのスケジューラを含む。したがって、制御キュー220は、基数N(ここで、Nは整数)個のスケジューラ222を含む。
いくつかの実施形態では、キュー220のキューエントリに記憶されたデータは、エイジに従ってインオーダで連続して記憶される。例えば、実施形態では、最も古いパケットのデータは、制御キュー220の先頭から開始して配置されている、連続して割り当てられたキューエントリに記憶される。割り当てに利用可能な無効な情報を記憶するキューエントリは、割り当てられたエントリに続いて、制御キュー220の末尾に配置される。受信したパケットインデックス216は、パケットの送信元及び宛先のクライアント識別子、優先度レベルやQoSパラメータ、パケットのデータサイズ等のうち1つ以上とともに、利用可能なキューエントリに記憶される。いくつかの実施形態では、エイジの指標は、制御キュー220のキューエントリに記憶されない。むしろ、いくつかの実施形態では、エイジは、キューエントリの位置によって暗示され、キューの先頭に近いエントリは、キューの末尾に近いエントリよりも古いものである。
1つ以上のスケジューラ222が、処理してネットワーク上に送信するためのパケットを選択すると、スケジューラ222は、選択されたキューエントリに記憶されているスケジュールされたパケットインデックス224を、バッファ210及びパケットメモリ230の各々に送信する。バッファ210は、パケットインデックス224を、書き込みポインタ214が指すバッファエントリから開始して順にバッファエントリに記憶する。書き込みポインタ214は、受信したパケットインデックス224の数だけ増分する。フルスループットが達成されている場合、受信したパケットインデックス224の数は、ネットワークスイッチ200の基数Nに等しい。
割り当て解除論理236は、スケジュールされたパケットインデックス224を受信し、対応するメモリエントリを選択する。デコーダ(図示省略)は、割り当て解除するメモリエントリを選択するために、スケジュールされたパケットインデックス224をデコードする。実施形態では、割り当て解除論理236は、何れのメモリエントリが割り当て解除されているかを決定するためにマルチプレクサを使用する。他の組み合わせ論理も可能であり、考えられる。図示するように、割り当て解除論理236内のマルチプレクサのデータ入力は、メモリエントリ内のデータを受信する。割り当て解除論理236内のマルチプレクサの選択ラインは、スケジュールされたパケットインデックス224のデコード値を受信する。パケットのペイロードデータは、ネットワークスイッチ200から送信され、ネットワーク上でその宛先にルーティングされる。
パケットがネットワークスイッチ200によって送受信されると、インターフェース論理(図示省略)が通信プロトコルを管理する。実施形態では、バッファ210、制御キュー220及びパケットメモリ230間のインターフェース(図示省略)は、データを送受信するための1つ以上のバッファを備えるワイヤを含む。実施形態では、パケットがクロックサイクル内で処理されるので、バッファ210、制御キュー220及びパケットメモリ230間で順次素子(sequential elements)は使用されない。したがって、スケジューラ222は、制御キュー220のキューエントリを選択し、クロックサイクル内で、選択されたキューエントリが割り当て解除され、パケットメモリ230内の対応するメモリエントリが割り当て解除され、バッファ210内のバッファエントリが更新され、書き込みポインタ214が更新される。さらに、クロックサイクル内で、制御キュー220は、割り当てられたままのキューエントリをキューの端に向けてシフトし、割り当てられたままのキューエントリが制御キュー220内で連続して配置されるようにする。
様々な実施形態では、スケジューラ222は、制御キュー220内の任意のキューエントリを選択する。したがって、選択されたキューエントリは、スパースなキューエントリである。2つの連続するキューエントリは互いに隣接して配置されるが、2つのスパースなキューエントリの間には1つ以上の他のキューエントリが配置される。したがって、割り当て解除のために選択された2つのスパースなキューエントリの間には、割り当て解除のために選択されていない1つ以上の割り当てられたキューエントリを有する。
フルスループットを維持するために、割り当て解除のために選択されたキューエントリの数は、ネットワークスイッチ200の基数Nに等しい(それ以下である)。一例では、Nは4である。このような例では、スケジューラ222は、制御キュー220内の割り当て解除のために4つのスパースなキューエントリを選択する。制御キュー220内の制御論理(図示省略)は、選択されたキューエントリの各々を見つけて、割り当て解除する。単一のクロックサイクル内で、制御論理は、割り当てられたままのキューエントリが連続するように、割り当てられたままのキューエントリを制御キュー220の先頭に向けてシフトする。いくつかの実施形態では、制御キュー220内の制御論理は、クロックサイクル内で、N個の2:1のマルチプレクサを介した伝搬遅延と同等の遅延で、折り畳みを実行する。したがって、制御キュー220を折り畳む制御論理は拡張可能である。コンポーネント210,220,230は、ネットワークスイッチに関して説明されているが、他の実施形態では、コンポーネント210,220,230のうち1つ以上は、ネットワークスイッチの外部でも使用されることに留意されたい。例えば、いくつかの実施形態では、1つ以上のコンポーネントは、プロセッサコア、通信ファブリック、メモリコントローラ、SOC内の別のクライアント等を含む。したがって、図3~図9に示すさらなる説明は、ネットワークスイッチの外部の回路及びハードウェア/ソフトウェア制御論理にも適用される。
図3を参照すると、折り畳み可能なキューの更新論理300の一実装形態の一般化されたブロック図が示されている。図示した例では、論理300とも呼ばれる折り畳み可能なキューの更新論理300は、スケジューラから受信したシフトベクトル状態310を含む。例えば、実施形態では、シフトベクトル状態310は、(図2の)スケジューラ222等のスケジューラ内の順次素子の出力である。図示した実施形態では、ネットワークスイッチの基数Nは、3である。したがって、シフトベクトル状態310は、3つのシフトベクトル-SV 312、SV 314及びSV 316を含む。図示するように、シフトベクトル状態312~316の各々は、6ビットベクトルである。組み合わせ論理320は、シフトベクトル状態310を受信し、シフトベクトル状態332~336を含む変更シフトベクトル状態330を生成する。図示するように、シフトベクトル状態332は、シフトベクトル状態312と同じである。しかしながら、シフトベクトル状態334,336は、シフトベクトル状態314,316とは異なる。
組み合わせ論理350は、シフトベクトル状態330を受信する。さらに、組み合わせ論理350は、キュー状態340を受信する。キュー状態340は、折り畳み可能なキューにおけるキューエントリの出力である。図示した実施形態では、折り畳み可能なキューは、6つのエントリを含む。キューエントリ0はデータ「A」を記憶し、キューエントリ1はデータ「B」を記憶する。以下同様である。キューエントリ0~5は、データA~Fを記憶する。組み合わせ論理350は、受信した入力に基づいて、キュー更新状態値360を生成する。実施形態では、キュー更新状態値360は、並べ替え後に折り畳み可能なキューに送信され記憶される。様々な実施形態では、外部スケジューラからシフトベクトル状態310を受信してから、記憶のためにキュー更新状態値360を折り畳み可能なキューに送信するまでの伝搬遅延は、単一のクロックサイクルである。
外部スケジューラは、キューにおいて割り当て解除するキューエントリを選択する。いくつかの実施形態では、これらの外部スケジューラは、ビットの第1のセグメント(各ビットが第1の値を記憶する)及びビットの第2のセグメント(各ビットが第2の値を記憶する)の両方を含むビットベクトルも生成する。様々な実施形態では、第1のセグメントと第2のセグメントとがビットベクトル内で接触する位置が、割り当て解除するために選択されたキューエントリを示す。例えば、シフトベクトルSVとも呼ばれるシフトベクトル312は、6ビットのビットベクトルである。
シフトベクトル312の第1のセグメントは、ビット位置0,1に2つのビットを含み、それぞれバイナリ値0を記憶する。シフトベクトル312の第2のセグメントは、ビット位置2~5に4つのビットを含み、それぞれバイナリ値1を記憶する。この例では、シフトベクトル312は、キューエントリ2が割り当て解除されることを示している。したがって、データCを記憶するキューエントリ2が割り当て解除される。シフトベクトル314の第1のセグメントは、ビット位置0~3に4つのビットを含み、それぞれバイナリ値0を記憶する。シフトベクトル314の第2のセグメントは、ビット位置4~5に2つのビットを含み、それぞれバイナリ値1を記憶する。この例では、シフトベクトル314は、キューエントリ4が割り当て解除されることを示している。したがって、データEを記憶するキューエントリ4が割り当て解除される。シフトベクトル314は、シフトベクトルSVとも呼ばれる。同様に、シフトベクトル316は、キューエントリ5が割り当て解除されることを示している。したがって、データFを記憶するキューエントリ5が割り当て解除される。シフトベクトル316は、シフトベクトルSVとも呼ばれる。
図示するように、組み合わせ論理320は、シフトベクトル312を変更しない。実施形態では、シフトベクトル332は、その6ビットベクトル内にシフトベクトル312と同じ値を有する。組み合わせ論理320は、シフトベクトル314を変更する。シフトベクトル314は、SVとも呼ばれる。シフトベクトル334は、{SV}とも呼ばれる。様々な実施形態では、論理320とも呼ばれる組み合わせ論理320は、シフトベクトル314の各ビット位置を、シフトベクトル312に記憶された値に基づく量だけ最下位ビット位置に向けてシフトすることによって、変換シフトベクトル334を生成する。例えば、値SV[0]はバイナリ0であるため、{SV}[0]は、SV[0]と同じ値、すなわち0を有する。
上記と同様に、値SV[1]はバイナリ0であるため、{SV}[1]は、SV[1]と同じ値、すなわち0を有する。上位のビット位置に移動を続けると、値SV[2]はバイナリ1であるため、{SV}[2]は、SV[2]ではなくSV[3]と同じ値を有する。SV[3]及び{SV}[2]の各々の値は0である。したがって、{SV}[2]は、バイナリ0の値を取得するが、SV[0]及びSV[1]とは異なる条件によるものである。上位のビット位置に移動を続けると、値SV[3]はバイナリ1であるため、{SV}[3]は、SV[3]ではなくSV[4]と同じ値を有する。SV[4]の値は1である。したがって、{SV}[3]は、値1を有する。
さらに上位のビット位置に移動すると、値SV[4]はバイナリ1であるため、{SV}[4]は、SV[4]ではなくSV[5]と同じ値を有する。SV[5]の値は1である。したがって、{SV}[4]は、値1を有する。最後に、値SV[5]はバイナリ1であるため、{SV}[5]は所定の値を有する。いくつかの実施形態では、値は、SV[5]と同じである。SV[5]の値は1である。したがって、{SV}[5]は、値1を有する。論理320は、同様のステップを実行して、{SV}とも呼ばれる変換シフトベクトル値336を生成する。しかしながら、論理320は、SVのみではなく、{SV}及びSVの各々に記憶された値を使用する。したがって、論理320は、他の受信ビットベクトル(つまり、SV)に記憶された値と、他の変換ビットベクトル(つまり、{SV})に記憶された値との両方に基づいて、変換シフトベクトル{SV}の値を生成する。
いくつかの実施形態では、論理320は、以下のステップを使用して、変換シフトベクトル{SV}を生成する。値{SV}[0]はバイナリ0であるため、SV[1]ではなくSV[0]がチェックされる。SV[0]の値はバイナリ0であるため、{SV}[0]は、SV[0]と同じ値、すなわち0を有する。次に、値{SV}[1]はバイナリ0であるため、SV[2]ではなくSV[1]がチェックされる。SV[1]の値はバイナリ0であるため、{SV}[1]は、SV[1]と同じ値、すなわち0を有する。次いで、値{SV}[2]はバイナリ0であるため、SV[3]ではなくSV[2]がチェックされる。SV[2]の値はバイナリ1であるため、{SV}[2]は、SV[2]の値ではなくSV[3]と同じ値、すなわち0を有する。同様に、{SV}[3:5]の値が生成される。
上述したように、{SV}[0:5]であるシフトベクトル314を生成する場合、各ビット位置には、SV[0:5]と同じビット位置の値が割り当てられるか、同じビット位置に記憶されたSV[0:5]の対応する値に基づいて、1つ増分されたビット位置の値が割り当てられる。{SV}[0:5]であるシフトベクトル316を生成する場合、各ビット位置には、SV[0:5]と同じビット位置の値が割り当てられるか、{SV}[0:5]及びSV[0:5]の対応する値に基づいて、次の2つ増分されたビット位置のうち1つの値が割り当てられる。
論理350は、変換ビットベクトル値330を受信し、上記と同様に、キュー状態340の値の位置を変換する。結果は、キュー更新状態値360として示される。図示するように、キューエントリ2,4,5は割り当て解除されており、キューエントリが折り畳まれている。キューエントリに示されるバックスラッシュ「/」は、割り当てに利用可能なキューエントリを示す。
図4を参照すると、変換ビットベクトル論理400の一実施形態の一般化されたブロック図が示されている。変換ビットベクトル論理400は、論理400とも呼ばれる。実施形態では、論理400は、(図3の)論理320として使用される。図示するように、マルチプレクサ410A~410Fは、データ入力ライン402A~402F上でビットベクトルSV[0:5]を受信する。マルチプレクサ410A~410Fは、選択入力ライン412A~412F上で異なるビットベクトルSV[0:5]を受信する。マルチプレクサ410A~410Fは、変換ビットベクトル{SV}[0:5]を出力ライン420A~420Fに提供する。
図示するように、マルチプレクサ440A~440Fは、データ入力ライン432A~432F上でビットベクトルSV[0:5]を受信する。マルチプレクサ410A~410Fは、選択入力ライン442A~442F上で異なるビットベクトルSV[0:5]を受信する。マルチプレクサ440A~440Fは、中間ビットベクトルを出力ライン450A~450Fに提供し、中間ビットベクトルは、データ入力としてマルチプレクサ460A~460Fに送信される。マルチプレクサ460A~460Fは、選択入力ライン462A~462F上で変換ビットベクトル{SV}[0:5]を受信する。マルチプレクサ460A~460Fは、変換ビットベクトル{SV}[0:5]を出力ライン470A~470Fに提供する。
図5を参照すると、変換キューエントリ論理500の一実施形態の一般化されたブロック図が示されている。変換キューエントリ論理500は、論理500とも呼ばれる。実施形態では、論理500は、(図3の)論理350として使用される。図示するように、マルチプレクサ510A~510Fは、キューエントリに記憶されたデータA~Fの各々からのビットを含むビットベクトルを受信する。データA~Fのデータサイズは、キューに記憶された様々なデータサイズのうち1つであってもよい。実施形態では、キューエントリに記憶されたビット毎に論理500が複製されるため、実際のビット位置が示されていない。データA~Fの各々からのビットは、データ入力ライン502A~502F上で受信される。マルチプレクサ510A~510Fは、選択入力ライン512A~512F上でビットベクトルSV[0:5]を受信する。マルチプレクサ510A~510Fは、中間ビットベクトルを出力ライン520A~520Fに提供し、中間ビットベクトルは、データ入力としてマルチプレクサ530A~530Fに送信される。
マルチプレクサ530A~530Fは、選択入力ライン532A~532F上で変換ビットベクトル{SV}[0:5]を受信する。マルチプレクサ530A~530Fは、中間ビットベクトルを出力ライン540A~540Fに提供し、中間ビットベクトルは、データ入力としてマルチプレクサ550A~550Fに送信される。マルチプレクサ550A~550Fは、選択入力ライン552A~552F上で変換ビットベクトル{SV}[0:5]を受信する。マルチプレクサ550A~550Fは、変換ビットベクトル{A}~{F}を出力ライン560A~560Fに提供する。
図6を参照すると、ネットワークオンチップスイッチのスループットを管理する方法600の一実施形態が示されている。説明のために、本実施形態(及び、図7~図8)のステップを順番に示す。しかしながら、記載された方法の様々な実施形態では、記載された要素のうち1つ以上が、同時に実行されてもよいし、図示した順序と異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素も実行される。本明細書に記載された様々なシステム又は装置の何れも方法600を実施するように構成されている。
様々な実施形態では、通信ファブリックは、1つ以上のクライアントと1つ以上のメモリコントローラとの間でトラフィックを転送する。様々な実施形態では、通信ファブリックは、要求及び応答をキューイングし、制御パラメータを記憶するための状態レジスタ、制御レジスタ及び他の記憶要素を含む。様々な実施形態では、通信ファブリックは、1つ以上の通信及びネットワークプロトコルに従い、1つ以上のバス上で送信元と宛先との間のトラフィックを効率的にルーティングするための制御論理を含む。トラフィックを効率的にルーティングするために、様々な実施形態では、通信ファブリックは、複数のネットワークオンチップ(NoC)スイッチも使用する。
NoCスイッチは、データを受信する(ブロック602)。様々な実施形態では、受信したデータは、ネットワークメッセージである。いくつかの実施形態では、ファブリックは、ポイントツーポイント(P2P)リングトポロジでNoCスイッチを使用する。他の実施形態では、通信ファブリックは、クラスタートポロジでプログラム可能なルーティングテーブルとともにNoCスイッチを使用する。さらに他の実施形態では、通信ファブリックは、トポロジの組み合わせにおいてNoCスイッチを使用する。NoCスイッチは、メモリアドレスを取得するためにアクセスされるバッファを含む(ブロック604)。いくつかの実施形態では、バッファは、インオーダ循環バッファである。
パケットのペイロードデータ等の受信したデータの一部は、取得されたメモリアドレスが指すメモリのエントリに記憶される(ブロック606)。受信したデータ(すなわち、ネットワークメッセージ)のメモリアドレス及び指標は、キューのキューエントリに記憶される(ブロック608)。メモリからネットワーク上に送信されるメッセージが選択される(ブロック610)。いくつかの実施形態では、クロックサイクル内で、選択されたメッセージの指標を記憶するキューエントリが割り当て解除される(ブロック612)。クロックサイクル内で、割り当てられたままのキューエントリは、割り当てられたままのキューエントリがキューにおいて連続して配置されるように、キューの端に向けてシフトされる(ブロック614)。
図7を参照すると、キューを折り畳むためのシフト量を決定する方法700の一実施形態が示されている。受信したメッセージのメモリアドレス及び指標は、キューのキューエントリに記憶される(ブロック702)。ネットワーク上に送信されるメッセージが選択される(ブロック704)。ビットベクトルが生成される(ブロック706)。様々な実施形態では、生成されたビットベクトルは、選択されたメッセージの指標を記憶するキューエントリを識別する。第1のビットベクトル以外のビットベクトルが選択される(ブロック708)。上述した例を参照すると、ビットベクトルSV[0:5]は、後の変換のために選択されていない。
他の生成されたビットベクトルに記憶された値に基づいてシフト量が決定される(ブロック710)。例えば、ビットベクトルSV[0:5]は、(図4の)論理400で先に示したように、マルチプレクサの選択ラインに送信される。また、シフト量は、1つ以上の他の変換ビットベクトルに記憶された値に基づいて決定される(ブロック712)。例えば、変換ビットベクトル{SV}[0:5]が、(図4の)論理400で先に示したように、マルチプレクサの選択ラインに送信される。選択されたビットベクトルに対して変換ビットベクトルが生成される(ブロック714)。
様々な実施形態では、変換ビットベクトルは、選択されたビットベクトルの各ビット位置を、決定された量だけ最下位ビット位置に向けてシフトすることによって生成される。他の実施形態では、値は、ビット位置毎に、最上位ビット位置に向けてシフトされる。最後のベクトルに到達していない場合(条件付きブロック716:「いいえ」)、方法700の制御フローは、ブロック708に戻り、第1のベクトル以外のベクトルが選択される。最後のベクトルに到達した場合(条件付きブロック716:「はい」)、変換ビットベクトルの生成が完了する(ブロック718)。いくつかの実施形態では、変換ビットベクトルの生成は、単一のクロックサイクル内で実行される。
図8を参照すると、キューを折り畳む方法800の一実施形態が示されている。受信したネットワークメッセージの指標を記憶するキュー内のキューエントリが選択される(ブロック802)。キュー内のキューエントリの位置と等しいビット位置が選択される(ブロック804)。シフト量は、変換ビットベクトルの各々における選択されたビット位置に記憶された値に基づいて決定される(ブロック806)。例えば、(図5の)論理500は、キューエントリに記憶されたデータのビットをシフトするためのビット位置の数を決定するために、マルチプレクサの選択ライン上で、変更されていないビットベクトルと、1つ以上の変換ビットベクトルと、を受信する。使用する変換ビットベクトルの数は、ネットワークスイッチの基数に基づいており、基数は、キューから割り当て解除するキューエントリの最大数である。
選択されたキューエントリの内容は、決定された量だけキューの端に向けてシフトされる(ブロック808)。最後のキューエントリに到達していない場合(条件付きブロック810:「いいえ」)、方法800の制御フローは、ブロック802に戻り、別のキューエントリが選択される。最後のキューエントリに到達している場合(条件付きブロック810:「はい」)、キューの折り畳みが完了する(ブロック812)。いくつかの実施形態では、キューの折り畳みは、単一のクロックサイクル内で実行される。
図9を参照すると、折り畳み可能なキューの更新論理900の別の実施形態の一般化されたブロック図が示されている。図示するように、基数は、前述した例の3ではなく、4である。ビットベクトル902~908は、外部スケジューラの順次素子から受信される。論理910~914は、(図4の)論理400について先に示したのと同じタイプの多重化選択論理を、分散された態様で示す。例えば、論理910は、ビットベクトル904を変換するために使用される。ビットベクトルSV[0:15]の論理ハイ値によるビットベクトル904からその変換ビットベクトルへの遷移は、ビットベクトル904において矢印記号「->」で示されている。マルチプレクサの選択ライン上の論理ハイ値による同様の遷移は、ビットベクトル906,908で示されている。
外部制御キューの初期状態は、状態920に示されている。キューの折り畳みをもたらす中間変換は、中間結果922~926に示されている。中間結果922~926間のマルチプレクサは、(図5の)論理500について先に示したのと同じタイプの多重化選択論理を、分散された態様で示している。制御キューの最終状態は、状態928に示されている。状態928に記憶された値は、外部制御キュー内の順次素子に送信される。図示するように、中間結果922~926は、ビットベクトル904~908が変換される際に同時に生成される。様々な実施形態では、キューの折り畳みは、クロックサイクル内で、N個の2:1のマルチプレクサを介した伝搬遅延と同等の遅延で発生する。ここで、Nは、ネットワークスイッチの基数に等しい0以外の整数である。したがって、キューを折り畳むための制御論理は、拡張可能である。
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、上述した方法及び/又はメカニズムを実施する。プログラム命令は、C言語等の高水準プログラミング言語でハードウェアの挙動を記述する。或いは、Verilog等のハードウェア設計言語(HDL)が使用される。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。多くのタイプの記憶媒体が利用可能である。記憶媒体は、使用中コンピューティングシステムによってアクセス可能であり、プログラム命令及び付随するデータをプログラム実行のためにコンピューティングシステムに提供する。コンピューティングシステムは、1つ以上のメモリと、プログラム命令を実行するための1つ以上のプロセッサと、を含む。上記の実施形態は、実施形態の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、多くの変形及び変更が当業者に明らかになるであろう。以下の特許請求の範囲は、このような変形及び変更の全てを包含するように解釈されることが意図される。

Claims (20)

  1. ネットワークスイッチ内の回路を備えるキューであって、
    データを、前記キューの先頭に最も近い最初の利用可能なエントリから開始してインオーダで連続して記憶するように構成されている複数のキューエントリと、
    制御論理と、
    回路を備える複数のスケジューラと、を備え、
    前記複数のスケジューラの各々は、
    割り当て解除のために前記複数のキューエントリのキューエントリを選択することと、
    単一のビット遷移を伴う複数のビットを含むビットベクトルを生成することであって、前記ビットベクトル内の前記ビット遷移の位置は、割り当て解除のために選択されたキューエントリを識別する、ことと、を行うように構成されており、
    前記制御論理は、前記複数のキューエントリのうち少なくとも2つの非連続エントリを識別する前記複数のスケジューラから複数のビットベクトルを受信したことに応じて、
    前記少なくとも2つの非連続エントリの各々を割り当て解除することと、
    割り当てられたままのエントリが前記キューの先頭から開始する連続したエントリに配置されるように、割り当てられたままのキューエントリを前記キューの先頭に向けてシフトすることと、を行うように構成されている、
    キュー。
  2. 前記キューは、N(Nは整数)個の読み取りポートと、N個の書き込みポートと、をさらに備え、割り当て解除するために選択されたキューエントリの数はNに等しい、
    請求項1のキュー。
  3. 前記選択されたキューエントリは、サービス品質(QoS)パラメータに関してアウトオブオーダで前記複数のスケジューラによる割り当て解除のために選択される、
    請求項2のキュー。
  4. 前記データは、エイジに関してインオーダで前記複数のキューエントリに記憶される、
    請求項3のキュー。
  5. 前記制御論理は、受信したビットベクトル内の各ビット位置を、受信した他のビットベクトルに記憶された値に基づく量だけ最下位ビット位置に向けてシフトすることによって、前記受信したビットベクトルの変換ビットベクトルを生成するように構成されている、
    請求項1のキュー。
  6. 前記量は、他の変換ビットベクトルに記憶された値に基づいている、
    請求項5のキュー。
  7. 前記キュー内の所定の位置にある前記キュー内のキューエントリは、前記所定の位置に等しい変換ビットベクトルのビット位置に記憶された値に基づいて、前記キューの先頭に向けてシフトされる、
    請求項5のキュー。
  8. 前記キューは、前記キューに記憶されたデータに対応するデータを記憶するように構成されたメモリへの第1のインターフェースを備え、
    前記制御論理は、データを読み取るために、前記選択されたキューエントリに記憶されたメモリアドレスを前記メモリに送信するように構成されている、
    請求項1のキュー。
  9. 前記キューは、メモリ内のエントリを識別するメモリアドレスを記憶するように構成された回路を備えるインオーダ循環バッファへの第2のインターフェースを備え、
    前記制御論理は、割り当てるメモリエントリを識別するために使用される前記循環バッファのエントリを更新するために、選択されたキューエントリに記憶されたメモリアドレスを、前記第2のインターフェースを介して前記循環バッファに送信するように構成されている、
    請求項8のキュー。
  10. 前記制御論理は、
    前記第2のインターフェースを介して、割り当てられた前記メモリのエントリを識別する、前記循環バッファに記憶されたメモリアドレスを受信することと、
    受信したメモリアドレスを、使用可能なキューエントリに記憶することと、を行うように構成されている、
    請求項9のキュー。
  11. データを、ネットワークスイッチ内の回路を備えるキューの複数のキューエントリに、前記キューの先頭に最も近い最初の利用可能なエントリから開始してインオーダで連続して記憶することと、
    回路を備える複数のスケジューラによって、割り当て解除のために前記複数のキューエントリのキューエントリを選択することと、
    前記複数のスケジューラによって、複数のビットベクトルを生成することであって、各ビットベクトルは、単一のビット遷移を伴う複数のビットを備え、前記ビットベクトル内の前記ビット遷移の位置は、割り当て解除のために選択されたキューエントリを識別する、ことと、
    前記複数のキューエントリのうち少なくとも2つの非連続エントリを識別する前記複数のスケジューラから複数のビットベクトルを受信したことに応じて、
    前記キュー内の制御論理によって、前記少なくとも2つの非連続エントリの各々を割り当て解除することと、
    前記制御論理によって、割り当てられたままのエントリが前記キューの先頭から開始する連続したエントリに配置されるように、割り当てられたままのキューエントリを前記キューの先頭に向けてシフトすることと、を含む、
    方法。
  12. 受信したビットベクトル内の各ビット位置を、受信した他のビットベクトルに記憶された値に基づく量だけ最下位ビット位置に向けてシフトすることによって、前記受信したビットベクトルの変換ビットベクトルを生成することをさらに含む、
    請求項11の方法。
  13. 前記量は、他の変換ビットベクトルに記憶された値に基づいている、
    請求項12の方法。
  14. 前記キュー内の前記制御論理によって、所定のエントリ位置にある前記キュー内のキューエントリを、前記所定のエントリ位置に等しい変換ビットベクトルのビット位置に記憶された値に基づいて、前記キューの先頭に向けてシフトすることをさらに含む、
    請求項12の方法。
  15. データを読み取るために、前記選択されたキューエントリに記憶されたメモリアドレスをメモリに送信することをさらに含む、
    請求項14の方法。
  16. ネットワークスイッチであって、
    データを、キューの先頭に最も近い最初の利用可能なエントリから開始してインオーダで連続して記憶するように構成された複数のキューエントリを備えるキューであって、回路を備えるキューと、
    前記キューに記憶された前記データに対応するデータを記憶するように構成されたメモリと、
    前記メモリ内のエントリを識別するメモリアドレスを管理するように構成された回路を備えるインオーダ循環バッファと、を備え、
    前記キューは、
    割り当て解除のために前記複数のキューエントリのキューエントリを選択することと、
    単一のビット遷移を伴う複数のビットを含むビットベクトルを生成することであって、前記ビットベクトル内の前記ビット遷移の位置は、割り当て解除のために選択された前記キューエントリを識別する、ことと、を行うように構成されており、
    前記複数のキューエントリのうち少なくとも2つの非連続エントリを識別する回路を備える複数のスケジューラから複数のビットベクトルを受信したことに応じて、
    前記少なくとも2つの非連続エントリの各々を割り当て解除することと、
    割り当てられたままのエントリが前記キューの先頭から開始する連続したエントリに配置されるように、割り当てられたままのキューエントリを前記キューの先頭に向けてシフトすることと、を行うように構成されている、
    ネットワークスイッチ。
  17. 前記キューは、受信したビットベクトル内の各ビット位置を、受信した他のビットベクトルに記憶された値に基づく量だけ最下位ビット位置に向けてシフトすることによって、前記受信したビットベクトルの変換ビットベクトルを生成するように構成されている、
    請求項16のネットワークスイッチ。
  18. 前記量は、他の変換ビットベクトルに記憶された値に基づいている、
    請求項17のネットワークスイッチ。
  19. 前記キューは、所定の位置にある前記キュー内のキューエントリを、前記所定の位置に等しい変換ビットベクトルのビット位置に記憶された値に基づいて、前記キューの先頭に向けてシフトするように構成されている、
    請求項17のネットワークスイッチ。
  20. 前記キューは、データを読み取るために、前記選択されたキューエントリに記憶されたメモリアドレスを前記メモリに送信するように構成されている、
    請求項17のネットワークスイッチ。
JP2020555898A 2018-04-12 2019-04-09 ネットワークスイッチのキュー Active JP7138190B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/951,844 US10601723B2 (en) 2018-04-12 2018-04-12 Bandwidth matched scheduler
US15/951,844 2018-04-12
PCT/US2019/026571 WO2019199817A1 (en) 2018-04-12 2019-04-09 Queue in a network switch

Publications (3)

Publication Number Publication Date
JP2021521529A JP2021521529A (ja) 2021-08-26
JPWO2019199817A5 JPWO2019199817A5 (ja) 2022-07-28
JP7138190B2 true JP7138190B2 (ja) 2022-09-15

Family

ID=66248826

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020555898A Active JP7138190B2 (ja) 2018-04-12 2019-04-09 ネットワークスイッチのキュー

Country Status (6)

Country Link
US (1) US10601723B2 (ja)
EP (1) EP3777059B1 (ja)
JP (1) JP7138190B2 (ja)
KR (1) KR102456086B1 (ja)
CN (1) CN112189324B (ja)
WO (1) WO2019199817A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11294678B2 (en) 2018-05-29 2022-04-05 Advanced Micro Devices, Inc. Scheduler queue assignment
KR20200116268A (ko) * 2019-04-01 2020-10-12 에스케이하이닉스 주식회사 버퍼 메모리, 이를 이용하는 연산 장치 및 시스템
US11334384B2 (en) * 2019-12-10 2022-05-17 Advanced Micro Devices, Inc. Scheduler queue assignment burst mode
US11948000B2 (en) 2020-10-27 2024-04-02 Advanced Micro Devices, Inc. Gang scheduling for low-latency task synchronization

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5108476B2 (ja) 2007-11-22 2012-12-26 アイシン精機株式会社 車両用ドアロック装置
JP2017173884A (ja) 2016-03-18 2017-09-28 日本電気株式会社 メモリアクセス制御装置、情報処理システム、メモリアクセス制御方法、及び、プログラム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05108476A (ja) * 1991-10-18 1993-04-30 Fujitsu Ltd 主記憶制御装置
US6246680B1 (en) 1997-06-30 2001-06-12 Sun Microsystems, Inc. Highly integrated multi-layer switch element architecture
US7406554B1 (en) 2000-07-20 2008-07-29 Silicon Graphics, Inc. Queue circuit and method for memory arbitration employing same
US6782461B2 (en) 2002-02-25 2004-08-24 Intel Corporation Dynamically adjustable load-sharing circular queues
US20040151197A1 (en) * 2002-10-21 2004-08-05 Hui Ronald Chi-Chun Priority queue architecture for supporting per flow queuing and multiple ports
US7689793B1 (en) 2003-05-05 2010-03-30 Marvell Israel (M.I.S.L.) Ltd. Buffer management architecture
US20080320274A1 (en) * 2007-06-19 2008-12-25 Raza Microelectronics, Inc. Age matrix for queue dispatch order
US8090892B2 (en) * 2009-06-12 2012-01-03 Freescale Semiconductor, Inc. Ordered queue and methods therefor
US9286075B2 (en) * 2009-09-30 2016-03-15 Oracle America, Inc. Optimal deallocation of instructions from a unified pick queue
US9008113B2 (en) 2010-12-20 2015-04-14 Solarflare Communications, Inc. Mapped FIFO buffering
US9397961B1 (en) 2012-09-21 2016-07-19 Microsemi Storage Solutions (U.S.), Inc. Method for remapping of allocated memory in queue based switching elements
US9378168B2 (en) 2013-09-18 2016-06-28 International Business Machines Corporation Shared receive queue allocation for network on a chip communication
US9979668B2 (en) * 2014-12-22 2018-05-22 Intel Corporation Combined guaranteed throughput and best effort network-on-chip
US10454850B2 (en) * 2014-12-24 2019-10-22 Intel Corporation Apparatus and method for buffering data in a switch
US10178011B2 (en) 2016-02-10 2019-01-08 Hewlett Packard Enterprise Development Lp Network traffic management via network switch QoS parameters analysis
US10250530B2 (en) * 2016-03-08 2019-04-02 Mellanox Technologies Tlv Ltd. Flexible buffer allocation in a network switch
US10607623B2 (en) * 2018-01-12 2020-03-31 Ribbon Communications Operating Company, Inc. Methods and apparatus for supporting communication of content streams using efficient memory organization

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5108476B2 (ja) 2007-11-22 2012-12-26 アイシン精機株式会社 車両用ドアロック装置
JP2017173884A (ja) 2016-03-18 2017-09-28 日本電気株式会社 メモリアクセス制御装置、情報処理システム、メモリアクセス制御方法、及び、プログラム

Also Published As

Publication number Publication date
CN112189324A (zh) 2021-01-05
US10601723B2 (en) 2020-03-24
CN112189324B (zh) 2023-09-26
KR102456086B1 (ko) 2022-10-18
KR20200139812A (ko) 2020-12-14
US20190319891A1 (en) 2019-10-17
JP2021521529A (ja) 2021-08-26
WO2019199817A1 (en) 2019-10-17
EP3777059B1 (en) 2022-08-17
EP3777059A1 (en) 2021-02-17

Similar Documents

Publication Publication Date Title
JP7138190B2 (ja) ネットワークスイッチのキュー
CN111190553B (zh) 使用混合存储器立方体链路的互连系统及方法
US8656071B1 (en) System and method for routing a data message through a message network
JP6535253B2 (ja) 複数のリンクされるメモリリストを利用する方法および装置
US7406568B2 (en) Buffer allocation for split data messages
US9841913B2 (en) System and method for enabling high read rates to data element lists
KR20210064377A (ko) 재순서화 동안 캐시 일관성을 유지하기 위한 방법
US11994996B2 (en) Transmission of address translation type packets
US9785367B2 (en) System and method for enabling high read rates to data element lists
KR20240024188A (ko) 네트워크 인터페이스 디바이스
JP2006313479A (ja) 半導体集積回路装置及びデータ転送方法
US9996468B1 (en) Scalable dynamic memory management in a network device
US10146434B1 (en) FIFO systems and methods for providing access to a memory shared by multiple devices
EP3841484B1 (en) Link layer data packing and packet flow control scheme
JP2024524047A (ja) ネットワークインターフェースデバイス

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220411

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220720

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20220720

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220905

R150 Certificate of patent or registration of utility model

Ref document number: 7138190

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150