JP6535253B2 - 複数のリンクされるメモリリストを利用する方法および装置 - Google Patents

複数のリンクされるメモリリストを利用する方法および装置 Download PDF

Info

Publication number
JP6535253B2
JP6535253B2 JP2015170003A JP2015170003A JP6535253B2 JP 6535253 B2 JP6535253 B2 JP 6535253B2 JP 2015170003 A JP2015170003 A JP 2015170003A JP 2015170003 A JP2015170003 A JP 2015170003A JP 6535253 B2 JP6535253 B2 JP 6535253B2
Authority
JP
Japan
Prior art keywords
memory
address
pointer
linked
memory list
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
JP2015170003A
Other languages
English (en)
Other versions
JP2016195375A5 (ja
JP2016195375A (ja
Inventor
ヴァンシ・パンチャグラ
スーリン・パテル
ケクィン・ハン
ツァヒ・ダニエル
Original Assignee
エックスプライアント, インコーポレイテッド
エックスプライアント, インコーポレイテッド
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 エックスプライアント, インコーポレイテッド, エックスプライアント, インコーポレイテッド filed Critical エックスプライアント, インコーポレイテッド
Publication of JP2016195375A publication Critical patent/JP2016195375A/ja
Publication of JP2016195375A5 publication Critical patent/JP2016195375A5/ja
Application granted granted Critical
Publication of JP6535253B2 publication Critical patent/JP6535253B2/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/90Buffering arrangements
    • H04L49/9005Buffering arrangements using dynamic buffer space allocation
    • 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/6225Fixed service order, e.g. Round Robin
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • 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/9015Buffering arrangements for supporting a linked list

Landscapes

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

Description

本発明は、概して、ネットワークデータ通信の分野に関する。本発明は、詳細に述べると、選択されたキューからのデータのトークン(データトークン)のデキュー動作(キューにデータトークンを1つ入れる動作)およびエンキュー動作(キューからデータトークンを1つ取り出す動作)を実行するうえで、複数のメモリリストをリンク(連結)することにより、スイッチングネットワークのデータトークン送信のスループットを向上させるシステムおよび方法に関する。
データスイッチングネットワークでは、データトラフィックが様々なフローに分類されて、バッファ内の多数のキューに蓄積される。ルータやその他のネットワーク構成要素においては、そのように蓄積された多数のキューが、共通の送出通信リンクすなわち送出側のポート(例えば、物理的な通信リンク、疑似回線など)を利用するのに競合するのが通例である。そのため、バッファリングされたキューが、送出側のポートでスケジューリングされる必要がある。つまり、ルータでは、送出側において、送信に先立ってトークン送信スケジューリング装置による処理を行い、どの待機パケット(キューイングされたパケットのうちのいずれのパケット)を次に送信するのかを選択しなければならない。
ルーティング時には、様々なソースポート(送信元ポート)からのデータトークンを、ソースポート、宛先ポートおよびトラフィック種別に基づいて分類するのが一般的である。次に、このようにして分類されたデータトークンを、バッファ内のそれぞれ異なるキューに振り分ける。すなわち、ルータ網(ルータのネットワーク)を通過するデータトークンおよび/またはルータ網により処理されるデータトークンは、少なくとも一時的にバッファメモリ内に保持されることになる。典型的には、リンクドリスト(リンクトリスト、連結リストとも称される)キューとして知られるメモリデータ構造を、バッファメモリと関連付けて保持する。リンクドリストキューには、上記バッファメモリ内における、各データトークンを記憶した各メモリ位置を指すポインタのリストが含まれる。従来のキュー構造では、バッファメモリ内に蓄積されている各データトークンに関連付けられた各ポインタを、順番どおりの連続するポインタの単一リストとして記憶するのが通例である。新たなデータトークンがキューに入るたびに、そのキューの状態が更新され、関連付けられたリンクリストポインタも更新される。キューからデータトークンをデキューする際には、スケジューラ(スケジューリング手段)が、出力ポートが利用可能であるか否かに基づいて、スケジューリングアルゴリズムを選択する。このようなキューの更新およびリンクドリストポインタの更新は、キューからデータトークンを取り出す際にも行われる。
マルチキャストトラフィックのデータパケットの処理時には(先述と同じくデータトークンの分類をソースポート、宛先ポートおよびトラフィック種別に基づいて実行するが)、レイテンシ時間がさらに増加する。具体的に述べると、まず、与えられたデータパケットについて、そのデータトークンを各種キューに振り分ける。各データトークンがそれぞれのキューに入り次第、当該キューの情報が更新される。次に、スケジューラが、ポートが利用可能であるか否かに基づいてスケジューリングアルゴリズムを選択し、バッファメモリ内の対応するキューから、データトークンをデキューする。しかし、送信したいどのデータトークンについても、ポートが利用可能になるまでの待機過程を繰り返す必要がある。また、データトークンのコピーを作成(複製)し、当該コピーを他のポートにも送信しなければならない場合、アルゴリズムによるクオリティオブサービス(QoS)のチェックが必要になる。さらに、優先的な取扱いを保証しなければならないような場合、例えば高優先度トラフィック、制御用トラフィック、レイテンシに敏感な音声/映像用トラフィック等の場合、データトークンの送信時に、さらなるチェックが必要になることもある。これらのチェックは、送信時のレイテンシ時間をなおいっそう増加させる。
バッファ管理手段に関して言えば、データトークンのエンキュー処理動作およびデキュー処理動作時のパイプラインフローにより、その性能が制限される。また、バッファ管理手段は、バッファに空き領域がない場合、次のデータトークンをエンキューすることができないため、データトークンのデキュー動作まで待機しなければならない。ここでのレイテンシ時間を短縮する技術として、パラレルバッファを組み込むことにより、より多くのデータトークンをエンキュー可能にすることが考えられる。しかし、パラレルバッファを組み込んだ場合、必要なリソースや消費電力が増加する。さらには、ルータの何らかの動作でバッファメモリを処理するたびに、キューにアクセスすることやキューのアドレスを求めることが必要となるため、所望のデータトークンのポインタを取得することになる。
ルータやその他のパケットスイッチの処理速度が高速化の一途をたどる(例えば、10Gps以上)につれて、入出力帯域幅、さらには、キュー保持用メモリのアクセスレイテンシの重要性が、ますます高まっている。つまり、データトークンへのポインタが要求されるたびキューにアクセスする従来の様式では、キュー用メモリが大きなボトルネックとなる。
以上に鑑みて、エンキュー動作及びデキュー動作の実行可能回数に限りがある現在の装置で、アドレスのリンクリスト(アドレスの連結されたリスト)を用いることによって上記回数を増加させることのできる、バッファメモリ管理技術を提供することは有利であろう。具体的に述べると、該バッファメモリ管理技術は、リンクリストに基づいた仮想キュー手法により、バッファへの/バッファからのデータトークンのエンキュー動作及びデキュー動作を多重で実行することができる。
本発明の実施形態では、仮想キューのリンクリストを、複数のリスト型サブキューによって形成する仕組み(メカニズム)を提供する。このようにサブキューのリストを複数実装することにより、多数のデータトークンの送信を、パラレルに(並列処理可能に)スケジューリングすることが可能になるため、ルータのスイッチング部のスループットを大幅に増加させることができる。
本発明の一実施形態は、データをメモリバッファにキューイングする方法に関する。この方法は、複数のキューから、所与のキューを選択する過程と、選択されたキューからデータトークンを受け取る過程と、を含む。キュー手段(キューモジュール)が、バッファ管理手段(バッファマネージャ)に、複数のアドレスおよび複数のポインタを要求する。前記複数のポインタは、前記バッファ管理手段によって前記データトークンの記憶用に割り当てられた複数のアドレスへのポインタである。次に、前記バッファ管理手段がメモリリストにアクセスし、当該メモリリスト内に、アドレスおよび割り当てられたアドレスへのポインタを生成する。アクセスされるメモリリストが、追加のアドレス割当て用の複数のリンクされるメモリリストを含む。さらに、前記アクセスされるメモリリストに、前記割り当てられたアドレスへの前記ポインタを書き込む。当該ポインタが、前記割り当てられたアドレスを数珠繋ぎにリンクする(鎖状に連結する)。前記方法は、さらに、前記選択されたキューから後続のデータトークンを受け取ると、追加のアドレス割当てのために他のメモリリストに移動し(移り(migrate))、前記割り当てられたアドレスを数珠繋ぎにリンクする追加のポインタを前記他のメモリリストに生成する過程、を含む。
本発明の他の実施形態は、データをメモリバッファにキューイングする装置に関する。この装置は、複数のキューから、所与のキューを選択し、選択されたキューからデータトークンを受け取るセレクタ手段、を備える。前記装置は、さらに、複数のアドレスおよび複数のポインタを要求する手段に応答する管理手段、を備える。前記複数のポインタは、前記管理手段によって前記データトークンの記憶用に割り当てられたアドレスへのポインタである。前記装置は、さらに、前記管理手段に応答して、メモリリストにアクセスし、当該メモリリスト内に、アドレスおよび前記割り当てられたアドレスへのポインタを生成する割当て手段、を備える。前記アクセスされるメモリリストは、追加のアドレス割当て用の複数のリンクされるメモリリストを含む。前記割当て手段は、前記アクセスされるメモリリストに、前記割り当てられたアドレスへの前記ポインタを書き込む。当該ポインタは、前記割り当てられたアドレスを数珠繋ぎにリンクするものである。次に、前記割当て手段は、前記選択されたキューから後続のデータトークンを受け取ると、追加のアドレス割当てのために他のメモリリストに移動し(移り(migrate))、前記割り当てられたアドレスを数珠繋ぎにリンクする追加のポインタを前記他のメモリリスト内に生成する。
本発明のさらなる他の実施形態において、前記キュー手段が、前記リンクされるメモリリスト内の、前記割り当てられたアドレスに、データトークンをエンキューするエンキュー部、および前記リンクされるメモリリスト内の、前記割り当てられたアドレスから、データトークンをデキューするデキュー部を含む。前記エンキュー部が、前記管理手段に、複数のデータトークンを一度にエンキューする要求を生成するものであってもよく、当該複数のデータトークンのアドレスが、ポインタによって、前記複数のメモリリストにわたってリンクされる。前記デキュー部が、前記管理手段に、複数のデータトークンを一度にデキューする要求を生成するものであってもよく、当該複数のデータトークンのアドレスは、ポインタによって、前記複数のメモリリストにわたってリンクされる。
上記の説明は、本発明を簡単に、一般化して、詳細を省略して説明したものに過ぎない。したがって、当業者であれば、上記の説明が例示に過ぎず、本発明を限定するものでないことを容易に理解するであろう。本発明は特許請求の範囲により定められるが、本発明のさらなる態様、構成および利点については、後述の詳細な説明(しかし、本発明を限定しない説明)から明らかになる。
具体的に述べると、本発明の各実施形態は、添付の図面を参照しながら行う、後述の詳細な説明から明らかになる。図面において、同一の符号は同一の構成又は構成要素を指す。
本発明の一実施形態における、一例としてのルータに設けられたバッファマネージャモジュール(バッファ管理手段)の構成を示すブロック図である。 本発明の一実施形態における、一例としてのルータに設けられたバッファ管理手段の、キューテイルポインタ部およびキューヘッドポインタ部の構成を示すブロック図である。 本発明の一実施形態における、仮想キューのリンクリスト構成の一例を示す図である。 本発明の一実施形態における、キューのリンクリスト構成の一例を示す図である。 本発明の一実施形態における、リンクリスト構造でのヘッドポインタおよびテイルポインタの一構成例を示すブロック図である。 本発明の一実施形態における、リンクリスト構造でのヘッドポインタおよびテイルポインタの一構成例を示す他のブロック図である。 本発明の一実施形態における、複数のメモリリスト構造にわたってデータトークンが互いにリンクされている様子を示すブロック図である。 本発明の一実施形態における、複数のメモリリスト構造にわたってデータトークンが互いにリンクされている様子を示すブロック図である。 本発明の一実施形態における、バッファ管理手段の、リンクリスト構造を用いた動作の一例を示すブローチャートである。 本発明の一実施形態における、一例としてのルータに設けられた例示的なバッファ管理手段の、キューテイルポインタ部およびキューヘッドポインタ部の構成を示すブロック図である。 本発明における、一例としてのルータに設けられたバッファマネージャモジュール(バッファ管理手段)の構成を示すブロック図である。
以下では、本発明の好ましい実施形態について詳細に説明する。図面には、そのような好ましい実施形態が幾つか例示されている。以下では、本発明を好ましい実施形態を参照しながら説明するが、本発明はこれらの実施形態に限定されない。むしろ、本発明は、それらの実施形態の変形例、変更および等価物を含んでおり、これらは添付の特許請求の範囲により定まる本発明の精神及び範囲に包含される。また、本発明の実施形態についての以下の詳細な説明では、本発明を徹底的に理解できるように多数の具体例を記載しているが、当業者であれば、そのような具体例を用いずとも本発明を実施できることを理解するであろう。また、周知の方法、周知の手順、周知の構成要素、周知の回路等については、本発明の実施形態の構成が不必要に不明瞭にならない範囲で、詳細な説明を省いている。本発明の実施形態を示す図面は、一部概略的に描かれており、必ずしも縮尺どおりではない。具体的に述べると、図中の寸法は、分かり易いように一部誇張して描いている場合がある。同様に、各図は、説明を分かり易くするために実質同じ向きで描かれているが、大抵の場合、これに大した意味はない。一般的に、本発明はどの向きでも動作可能である。
なお、前述した表現およびその他の同様の表現には、適切な物理的数量(物理量)がそれぞれ付随する点、さらに、これらの表現が当該物理的数量を表すためのその都度適した表現である点に留意されたい。以下の説明からも分かるように、特記しない限り、「処理」、「アクセス」、「実行」、「記憶」、「蓄積」、「表示(レンダリング)」等の表現を用いた説明は、本発明をとおして、コンピュータシステムまたはその他の同様の電子的コンピューティング装置による、そのシステムまたは装置のレジスタ内、メモリ内、あるいは、コンピュータ読取り可能な媒体内での、物理的(電子的)数量の形態で表される所与のデータを操作して、同じシステムもしくは装置のメモリ内、レジスタ内、その他の同様な情報記憶部内、あるいは、伝送系統内またはクライアントデバイス内での、同じく物理的数量の形態で表される別のデータに変換する動作や処理のことを指す。同じ構成要素が複数の実施形態に登場し、かつ、それに同じ符号が付されている場合には、最初に説明する実施形態での当該構成要素が、後続の実施形態においても同一の構成であることを意味する。
図1に、本発明を実装可能な、データトークン処理システム100を示す。システム100は、プロセッサ110を備える。このプロセッサ110は、複製処理・Qos・エンキュー処理手段(プロセッサ)120、バッファ管理手段(バッファマネージャ)130、スケジューリング・デキュー手段140およびバッファメモリ(メモリバッファ)150を有する。プロセッサ110は、各種データトークン(tokens of data and other tokens of data)を受け取るためのネットワークと、スケジューリング・デキュー手段140によって制御される出力ポート160との間のインターフェースを提供する。一例として、これら複製処理・Qos・エンキュー処理手段120、バッファ管理手段130、スケジューリング・デキュー手段140およびバッファメモリ150を有するプロセッサ110は、ルータまたはスイッチの、ラインカードまたはポートカードに実装された少なくとも1つの集積回路として実現することができる。「データトークン」とは、送信すべきパケットデータのうちの代表的な部分と見なすことができるが、必ずしもこれに限定されるわけではない。例えば、データパケットは、ペイロード部分とヘッダ部分とを有する。一般的に、「データトークン」は、データパケットのうちのヘッダ部分を含むか、あるいは、ヘッダ部分または当該データパケット全体と関連付けられたメタデータつまり特徴の集合を含む。また、ヘッダ部分が64〜128ビットの場合、ネットワーク要求基準にもよるが、データトークンは40〜50ビットであってもよい。「データトークン」は、ポインタを用いることにより、対応するデータパケットと関連付けることができる。そして、このデータパケットは、前記データトークンに連結されたポインタにより参照可能な、外部のメモリブロックに記憶され得る。
図1には、システムの構成要素が特定の配置構成で描かれているが、これはあくまでも例示に過ぎない点に留意されたい。詳しく言えば、既述したように、本発明は、どのような種類のパケット処理の場合にも、どのような種類のトークン処理の場合にも実現可能であり、特定のパケット処理用途に限定されない。
図2に、本発明の一実施形態における、バッファメモリ管理手段(バッファ管理手段)200、ならびに当該バッファ管理手段の演算部210での、キュー蓄積部(キューメモリ)内のキューテイルポインタ部(キューテイルポインタ蓄積部)240、キューヘッドポインタ部(キューヘッドポインタ蓄積部)250およびフリーポインタ部(フリーポインタ蓄積部)260を示す。これらリンクドリストポインタ240〜260は、バッファ管理手段130(図1)内にあり、複製処理・Qos・エンキュー処理手段(プロセッサ)120(図1)およびスケジューリング・デキュー手段140(図1)の制御下で保持され得る。全てのキューが、キューテイルポインタ(キューのテイルポインタ)240とキューヘッドポインタ(キューのヘッドポインタ)250とを有する。キューテイルポインタ240は書込み動作の位置を指定し、キューヘッドポインタ250は読出し動作の位置を指定する。具体的に述べると、読出し動作実行時のキューヘッドポインタ250は、次の読出し動作に移行する都度、キューに沿ってシフトする。同じく、キューテイルポインタ240は、次の書込み動作に移行する都度、キューに沿ってシフトする。つまり、最後のキューテイルポインタ240が、1つのサイクル(1つの書込み/読出しサイクル)内における最後の書込み動作を特定し、最後のキューヘッドポインタ250が、1つのサイクル(1つの書込み/読出しサイクル)内における最後の読出し動作を特定する。
図2に示すように、キューテイルポインタを要求する要求220により、特定のキューにアクセスする際には、新しいキューヘッドポインタ250および新しいキューテイルポインタ240が読み出される。そして、このキューに対してデータトークンの受け取りが行われる。そのデータトークンの受取りがなされた後は、ネクストヘッドポインタ(次のヘッドポインタ)の情報に対して、読出し及び処理のためのアクセスが可能となる。
図3に、選択されたQに対して用いる、パラレルな(並列処理可能な)リンクリスト構成を示す。これらのリンクリストは、データトークンを受け取った順番に従ってキューイングする。最初に要求されるポインタは、キューヘッドポインタである場合もあれば、キューテイルポインタである場合もある。キューQは、4つのリンクドリストQ00〜Q03に分割される。つまり、1つのQは、4つのメモリ領域(記憶位置)Q00〜Q03に分割される。図3に示すように、1つのメモリ領域は、Q’000〜Q’003のリストからなる。したがって、リンクリストQ00〜Q03のうちの1つのリストは、さらに、Q00〜Q03の4つのサブリンクリストに細分される。これにより、Qについての1つの読出しサイクル内に、例えば4つのメモリ領域Q00〜Q03のそれぞれに対して読出しを実行することが可能となる。すなわち、各Q00〜Q03の読出し動作時に、1つの読出しサイクルをNとすると、N/4を充てることになる。1つのQに追加のQ00〜Q03を互いに連結する構成により、Qの1つのクロックサイクル内に、追加のリンクリストを連結しない構成で通常受け取ることができるよりも多くのデータトークンセットを受け取ることができる。これに対し、追加のリンクリストを連結しない構成で同じ数のデータトークンセットを受け取るには、最大で4つのサイクルにわたって読出しを行わなければならない。
図4に、1つのQについての読出しサイクルを示す。この読出しサイクルNの1/4つまりN/4が、各Q00、Q01、Q12…の読出しに充てられている。第1のクロックサイクル内には、Q00、Q01、Q12およびQ00が含まれる。次のクロックサイクルでは、N/4だけシフトさせて、Q01、Q12、Q00およびQ01で開始する。後続のクロックサイクルでは、Q12…に、それぞれN/4だけシフトさせる。したがって、後続の読出しサイクルも書込みサイクルも、それぞれN/4時間だけシフトさせて実行する。つまり、1つのQについてのクロック期間内において、最大で約4回のN/4レジスタシフトを行うので、レジスタシフト間の時間距離(period distance)を短縮することができる。
図5Aを参照しながら、キューが選択された後に読出し要求が実行され、データトークン505をデキューすることが要求されている場合を考える。スケジューラ(スケジューリング手段)が、その読出し要求に応答して、前記選択されたキューの中から、一番先頭のデータトークン505をポップする。この要求されるデータトークン505は、バッファ管理手段により、複数のメモリバンクからなるメモリバンクセットのうちの、第1の利用可能なメモリ領域に記憶されている。この例では、メモリバンク0が、その要求されるデータトークン505の割当てアドレスとして指定されている。ヘッドポインタ520が、前記バッファ管理手段のリンクリスト型管理アプリケーションにより、要求されたデータトークン505の先頭を指すポインタとして選択される。このメモリ位置は、前記バッファ管理手段により、Q00とラベル付けされている。また、前記バッファ管理手段の内部クロックアプリケーションにより、要求されているデータトークン505について、4つのメモリ位置からなる組が割り当てられている。第1のデータトークン505を受け取った後に、第1のクロックサイクルQの開始点を確認してもよい。この開始点は、最初のヘッドポインタ510が指す位置であると共に、最初のデータトークン505を要求する要求の読出し及び処理後に、再度認識される位置でもある。
メモリ位置Q00のセットのそれぞれが、最大で4つのメモリ領域に割り当てられる。これらメモリ領域は、前記選択されたキューから受け取るデータトークンのためのものである。まず、メモリ位置Q00には、テイルポインタ515によって次のメモリ位置がリンクされている。ここで、前記バッファ管理手段が、次の読出し要求を送信して、前記選択されたキューからの第2のデータトークンを受け取る場合を考える。具体的に述べると、この第2のデータトークンは、メモリバンク1内の、利用可能なメモリ位置Q00に動的に割り当てられている。前記バッファ管理手段から受け取るネクストポインタ(次ポインタ)515が、そのメモリ位置Q00を指す、次のヘッドポインタ(数珠繋ぎにおけるリンク先を指すポインタ)となる。このようなデイジーチェーン連結により、2つのデータトークンのデキュー動作は、複数のメモリバンクをまたいだ2段階処理の形態で実行される。開始時の515および550における2つのデータトークンが、最初のデータトークンQ00515およびその次のデータトークンQ00550であるとする。これらデータトークンは、前記選択されたキューから要求されたものである。これらデータトークンQ00515,Q00550は、前述したような2段階処理でデキューされる。具体的に述べると、Qのヘッドポインタ510が最初に読み出されることで、メモリ位置Q00からのデータトークンが処理される。Q00の処理後、前記バッファ管理手段により、次ポインタであるテイルポインタ515の読出しおよび特定が可能となる。すなわち、Qの要求が実行されると、Q00が読み出され、このQ00および当該Q00に対応する(Q00が指す)データの受け取りが行われ、さらに、次のQ00への経路が特定される。このQ00から、Q00への経路に用いる次ポインタであるテイルポインタ550が特定され、さらに、その後に続く次ポインタ565が特定される。なお、Qの要求が発生した際に、このQに関するオブジェクト又はデータのセットの送信先は既に判明している。また、図5Aには、その他のデータトークンセット(データトークンのセット)525,570のリンク経路も、同様にデイジーチェーン連結されている様子が示されている。具体的に述べると、割り当てられたメモリ位置Q03はQ03にリンクされており、そのテイルポインタ535が、メモリバンク内のアドレスQ03560を指している。570に対するメモリリスト割当てのアドレスQ02は、そのテイルポインタによってQ02540に連結されている。図5Aには、さらに、後続のサイクルにおいて追加でメモリリスト内に割り当てられるQ01545も示されている。
前記バッファ管理手段からの読出し要求の送信が連続する際に、4つの互いにリンクされたメモリ位置からなるタプル又は組が形成される。具体的に述べると、前記バッファ管理手段は、4つの互いにリンクされたメモリ位置からなる第1の組が終わると、同じく4つの互いにリンクされたメモリ位置からなる次の組を開始するといった、4つの互いにリンクされたメモリ位置からなるタプル又は組を形成する過程を、前記選択されたキューから全てのデータトークンがポップされるまで続ける。データトークンの数が奇数であるか、または、4つの互いにリンクされたメモリ位置からなる最後の組を満たすのに不十分な数のデータトークンしか残っていないような場合、その最後のタプル又は組内に、空のメモリ位置が存在することになる。
第2のメモリ位置Q00には、テイルポインタ550によって第3のメモリ位置が連結されている。具体的に述べると、テイルポインタ550が、第3のメモリ位置Q00を指すヘッドポインタとなる。メモリバンク内の、この第3のメモリ位置は、Q00と称される。各メモリ位置は、複数のメモリバンクをとおして、ラウンドロビン方式によって、又は周回方式の移動により、動的に指定および割当てが行われる。このラウンドロビン的な過程は、4つのメモリ位置がヘッドポインタ及びテイルポインタによって互いにリンクされてなる、全ての組の形成が終わるまで続けられる。このようにして形成される周回ループにより、所与の時間のあいだに前記選択されたキューから送出可能なデータ量、つまり、所与のネットワークスイッチングアルゴリズムにより所与のキューからデータをデキューすることのできる頻度が決まる。例えば図5Aには、Q00515⇒Q00550⇒Q00565の周回構成が、複数のメモリバンクであるリストおよびリストをリンクしている様子が示されている。具体的に述べると、全てのバンクリスト510,530,555がデータトークンQ00〜Q03を含み、これらデータトークンQ00〜Q03は、どのデータトークンも一連のQに関連付けられるように、経路内で数珠繋ぎにリンクされている。
図5Bは、キューテイルポインタ585と、Q00〜Q03のキューテイルポインタからなる関連サブブロック590を示すブロック図である。図5Bには、さらに、キューヘッドポインタ586と、Q00〜Q03のキューヘッドポインタからなる関連サブブロック595が示されている。このようにキューテイルポインタが蓄積されてなるサブブロック590と、キューヘッドポインタが蓄積されてなるサブブロック595とのポインタ対のそれぞれは、図5Aのバンクおよびバンクで示されたパラレルの(並列処理可能な)リンクリストで数珠繋ぎにリンクされている。
図6A及び図6Bは、4つのパラレルな(並列処理可能な)リンクリストで構成された、キュー100についてのパラレルリンクリスト構成の一例を示すブロック図である。なお、図6Aの例示的な実施形態における動的なリンクリストが、パラレルの(並列処理可能な)リンクリストを1つ以上追加又は削除するように変更されても、本発明の実施形態の根本的思想は変わらない点に留意されたい。
図6Aは、4つのパラレルな(並列処理可能な)リンクリスト:Q100−0リンクリスト(第1のパラレルなリンクドリスト605);Q100−1リンクリスト(第2のパラレルなリンクドリスト610);Q100−2リンクリスト(第3のパラレルなリンクドリスト615);およびQ100−3リンクリスト(第4のパラレルなリンクドリスト620);で構成された、1つのキュー100についてのパラレルリンクリスト構成の一例を示すブロック図600である。サブリストブロック間を連結する、外部の仮想的なカップリング625,630が、それぞれ、リンクドリストQ100−0⇒Q100−1⇒Q100−2⇒Q100−3を経てQ100−0に戻るループを構成する第1組のカップリングと、リンクドリストQ100−0⇒Q100−1⇒Q100−2⇒Q100−3を経てQ100−0に戻るループを構成する第2組のカップリングとが設けられていることを表している。各組のカップリングには、4つのデータトークンからなる1つのデータトークンセットについて、これら4つのデータトークンを数珠繋ぎにリンクするテイルポインタおよびヘッドポインタに加えて、所与のデータトークンセットにおける最後のデータトークンのテイルポインタと次のデータトークンセットにおけるヘッドポインタとの両方の役割を果たす、末尾カップリング625,630も含まれる。Q100−0⇒Q100−0⇒Q100−0間の内部カップリングは、順番どおりの各データトークンセットに対応した、個々のパラレルリストを表している。つまり、データトークンセット1の最後のテイルポインタは、データトークンセット2における次のトークンに接続され、セット1の最後のテイルポインタは、データトークンセット2の最初のヘッドポイントとしての役割を果たす。図6Aの例では、リンクドリストQ100−0⇒Q100−1⇒Q100−2⇒Q100−3による1つの完全なデータトークンセット1と、リンクドリストQ100−0⇒Q100−1⇒Q100−2⇒Q100−3による1つの完全なデータトークンセット2との2組が設けられているので、テイルポインタ625,630により、データトークンセット2におけるヘッドポインタとデータトークンセット3におけるヘッドポインタとの、2つのヘッドポインタが生成されることになる。
図6Aには、さらに、4つのデータトークンからなる各データトークンセットを、メモリリストに割り当てて埋めていくエンキュー動作、およびデータトークンセットを複数の割り当てられたメモリ位置からデキューするデキュー動作を行う、リンクリストのラウンドロビン的な又は周回的な過程の概要が示されている。図6Aでは、サブリスト605,610,615,620間の、4つのデータトークンからなる第1のデータトークンセットにおける連結の様子が、「1−1−1−1」で表されている。前記バッファ管理手段は、内部カウンタ(計数部)アプリケーションを用いて、4つのデータトークンからなる各データトークンセットを追跡する。バッファメモリには、全てのカウンタ値を、対応するヘッドポインタおよびテイルポインタと共に記憶する仮想テーブルが生成される。また、4つの各サブリスト605,610,615,620内のデータトークンには、さらに、追加のデータセットに関連付けられた追加のポインタが設けられてもよい。このような追加のポインタにより、外部にデータを記憶することが可能になる。4つのデータトークンからなる最初のデータトークンセットが終わると、前記バッファ管理手段は、内部カウンタ(計数部)をインクリメントして、次のデータトークンセットを「2−2−2−2」と指定する。この過程は、前記選択されたキューから全てのデータトークンがエンキュー又はデキューされるまで繰り返される。具体的に述べると、前記バッファ管理手段は、内部カウンタ(計数部)アプリケーションを用いることにより、それぞれ4つのデータトークンからなる複数のデータトークンセットをFIFO型の順序で並べて、図6Aの例に示すように各データトークンセットを1⇒2⇒3の番号順で連結する。
図6Bは、特定の宛先(ポート4;トラフィッククラス4)(図示せず)用に生成された、所与のキュー100についてのキューリストの一例を示すブロック図である。図6Bには、パラレルの(並列処理可能な)サブリスト635,640,645,650が示されている。例えば、メモリサブリスト635で、Q100のキューテイルポインタ記憶部がQ100−0であるとする。このキューテイルポインタ記憶部は、カレントポインタ(現ポインタ)1000を記憶する。さらに、メモリからフリーポインタ1100が読み出されて、そのキュー100−0のキューテイル記憶部に書き込まれる。つまり、Q100−0についてのキューテイル記憶部は、カレントポインタ1000およびネクストポインタ(リスト内の次ポインタ)1100を記憶する。後に示す表1.1に、各「Qtail Req(キューテイル要求)」を、そのカレントポインタ1000およびネクストポインタ1100と共に列挙する。これらの各キューテイル要求、カレントポインタおよびネクストポインタにより、内部のパラレルな(並列処理可能な)リンクリストが構築される。Q100−0内のメモリ割当ては、利用可能であるか否かに基づいて、ランダムに且つ動的に選択される。つまり、メモリリスト内の順序(割当て順序)は、メモリ位置が利用可能であるか否かによって変化する。後に示す表1.2に、動的にリストを生成する様子を示す。具体的に述べると、このエンキュー過程において、前記バッファ管理手段は、4つのデータトークンからなる第1のデータトークンセットに対してカレントポインタ1000を割り当て、その次に、4つのデータトークンからなる次のデータトークンセットに対してネクストポインタ1100を割り当てる。図6Bには、内部カウンタ(計数部)が示されており、カレントポインタ1000のカウンタは0である。第1のデータトークンセットにおける次のデータトークンへのネクストポインタ(数珠繋ぎにおけるリンク先を指すポインタ)は、1000−0⇒2000−1を表すテイルポインタによって連結されている。このとき、前記カウンタは「1」に更新されて、サブリストQ100−1のカレントポインタは「2000」である。サブリストQ100−2では、カレントポインタは3000であり、前記カウンタは「2」に設定される。サブリストQ100−3では、カレントポインタは4000であり、前記カウンタは「3」に設定される。前記バッファ管理手段が各リストを移動して内部カウンタを更新するたびに、各サブリスト635〜650にカレントポインタが割り当てられる。このようにして、前記バッファ管理手段は、4つのデータトークンからなるデータトークンセットごとに、ヘッドポインタおよびテイルポインタのセットを生成していく。前記バッファ管理手段は、全てのサブリストを移動し終えると、符号655,660を介して再び戻り、フリーポインタを次のデータトークンセットのカレントポインタに設定する。このような周回的またはラウンドロビン的なアプローチを用いることにより、4つのデータトークンからなる各データトークンセットを、前のデータトークンセットにおける最後のテイルポインタが次のデータトークンセットにおける後続ヘッドポインタになるように全てのサブリストを使用して記憶することができる。したがって、最初のQ100−0リンクリスト635でのカウンタ値は、各データトークンセットに割り当てられるポインタのセットつまりポインタ数に対応して、0,4,8…の、各要素間の差分が4である整数集合となる。
Figure 0006535253
図7は、図2のバッファ管理手段の動作によって実行される処理の一例を示すフローチャートである。図7のフローチャートのステップ(過程)は、キュー100に関係した連続的なパケットトラフィックを表している。ステップ705では、データの宛先ポートおよびトラフィッククラスに基づいてキューが選択される。ステップ710では、エンキュー部120(図1)が、バッファ管理手段130(図1)に、前記データをバッファメモリ150(図1)に記憶するためのポインタを要求する。以下では、図6A及び図6Bのように特定されたキュー100を例に挙げて説明する。まず、前記エンキュー部が、キュー100のポインタ位置を要求する。ステップ715では、前記バッファ管理手段が、前記特定されるキュー100のキューテイルポインタ記憶部を確認し、カレントポインタをこの位置に設定する。さらに、前記バッファ管理手段は、フリーポインタ記憶部からフリーポインタを1つポップして、これを前記キューテイルポインタ記憶部に書き込み、このフリーポインタを前記エンキュー部に渡すネクストポインタとして特定する。
ステップ720では、前記エンキュー部が、前記カレントポインタを用いてデータトークンの書込みを行い、かつ、前記バッファメモリ内の次のメモリ位置を認識する。具体的には、前記エンキュー部は、既述の表1.1に示すようにそのメモリ位置1000を用いてデータトークンの書込みを行い、かつ、メモリ位置1100をネクストポインタの位置として認識する。さらに、前記エンキュー部は、次のキューテイル要求100−1の際に、メモリ位置2000のカレントポインタを使用し、かつ、ネクストポインタがメモリ位置2100であることを認識する。後続のキューテイル要求、カレントポインタ位置およびネクストポインタ位置については、前記表1.1を参照されたい。
ステップ725では、キューのデキュー動作がスケジューリングされると、デキュー部が、前記バッファ管理手段に、そのキューのキューヘッドポインタを要求する。具体的には、例えばキュー100のデキュー動作がスケジューリングされると、前記デキュー部が、前記バッファ管理手段に、キュー100のヘッドポインタ1000を送信するように要求する。ステップ730では、後述の表1.2に示すように、前記バッファ管理手段が、要求されたキューについて、ヘッドポインタ値=1000を割り当てる。
ステップ735では、前記デキュー部が、前記バッファメモリからそのパケットおよびネクストポインタを読み出した後、このネクストポインタをヘッドポインタ更新情報として前記バッファ管理手段に送信する。具体的に述べると、前記デキュー部が、前記バッファ内の位置1000から読出しを行い、データトークンおよびネクストポインタ1100を受け取る。そして、前記デキュー部は、この1100を、キュー100のヘッドポインタ更新要求として送信する。前記デキュー部は、このようにしてフリーポインタとなったポインタ1000を、前記バッファ管理手段に送信する(デキュー動作の詳細については、以下の表1.2を参照されたい)。
Figure 0006535253
キュー100についてのスケジューリングされたデキュー動作は、前記デキュー部によって実行される。具体的には、スケジューラ(スケジューリング手段)が、各Qを複数のキューにわたって等分割するかたちで、4つのクロックサイクルで実行する。前記スケジューラは、キュー100,101,102,103のヘッドポインタ情報を順番に要求する。これにより、前記スケジューラの要求の順番でデキュー動作が実行される。各Qについてのスケジューリングされたデキュー動作は、前記スケジューラが、合計4つのクロックで実行する。これは、1つのQにつき、4つの異なるパラレルな(並列処理可能な)リンクリストによって数珠繋ぎにリンクされたデータに同時にアクセスする動作とも見なせる。つまり、1つのパラレルなリンクリストにつき、デキュー動作が、1つのサイクルあたり16クロックの最速で行えることを意味する。スループットやレイテンシの限界によっては、これらパラレルなリンクリストからのデキュー動作の1つのサイクルあたりのクロック数を、4から8またはそれ以上に増やしてもよい。
図8は、図2と同様のブロック図であり、エンキュー動作およびデキュー動作の過程を示している。図8では、まず、入来トークン(1)が受け取られて、エンキュー部820によって分類される。次に、出力(3)が、バッファメモリ830からの新しいキューテイルポインタを要求する。パラレルな(並列処理可能な)リンクリスト用のキューテイル記憶情報(2)を用いて、バッファメモリ850への書込み動作が行われる(4)。このようにして、データトークンがバッファメモリ850に書き込まれる。スケジューラ840は、Q(Q)(5)を選んで、前記パラレルなリンクリストのキューヘッドポインタ(6)を要求する。前記バッファ管理手段がこのキューヘッドポインタを読み出し、このキューヘッドポインタを更新後ヘッドポインタとして使用し、この更新後ヘッドポインタを前記パラレルなリンクリストに書き込む。
図9は、本発明の一実施形態における、入来トークンが受け取られてQに分類される際の、バッファ管理手段が実行する過程の一例を示す図である。新しいキューテイルポインタを要求する要求(3)が、キューテイルポインタ部920に送信される。パラレルなリンクリストの複数のキューテイルポインタが、要求ごとに生成される。これにより、トークンが受け取られると、そのトークンの前記バッファメモリへの書込み動作を実行することができる。スケジューラの動作については、Qが選ばれると、キューヘッドポインタ手段部930に、キューヘッドポインタ(6)を送信するように要求する要求が生成される。これにより、パラレルな各リンクリストのキューヘッドポインタが、それらパラレルな各リンクリストから送信される。この要求されたキューヘッドポインタが読み出されると、当該ヘッドポインタに関連付けられたデータトークンが、更新後キューヘッドポインタと共に送り出される。更新前のキューヘッドポインタである前記要求されたキューヘッドポインタは、使用済みフリーポインタになる。
本発明の例示的な実施形態から分かるように、4つのパラレルな(並列処理可能な)サブリンクリストを数珠繋ぎにリンクすることにより、選択されたQについて、所与のN時間におけるエンキュー書込み動作およびデキュー読出し動作を短縮することができる。さらに、本発明にかかるルーティングプロセスにより、エンキュー動作やデキュー動作でのバッファスペース割当てが限られていても、スループットを有利に向上させることができる。これにより、バッファ管理手段が、このボトルネック的な動作過程におけるレイテンシ時間を減少させることができる。キューの割当てを、エンキュー動作およびデキュー動作用の複数の仮想サブキューリストに分割することにより、バッファの物理的構成を大幅に変更することなく、データトークンの取出しおよび送信の高速化を実現し、さらには、エンキュー動作およびデキュー動作の総レイテンシ時間を減少させることができる。
本発明にかかるルータの回路は、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップ(SoC)、フィールドプログラマブルゲートアレイ(FPGA)等で実現可能である。また、ルータには、当該技術分野において周知であるその他の様々な機能や構成要素が設けられてもよい。
本明細書では特定の好ましい実施形態及び方法を開示しているが、本発明の精神及び範囲を逸脱しない範囲で、これらの実施形態及び方法に変形や変更を施せることは、以上の説明を踏まえれば当業者にとって明白である。なお、本明細書での開示範囲は、添付の特許請求の範囲並びに関係法令の規制及び基本理念に準じてのみ制限され得ることに留意されたい。
なお、本発明は、実施の態様として以下の内容を含む。
〔態様1〕
データをメモリバッファにキューイングする方法であって、
複数のキューから、所与のキューを選択する過程と、
選択されたキューからデータトークンを受け取る過程と、
キュー手段が、バッファ管理手段に、アドレスおよびポインタを要求する過程であって、前記ポインタが、当該バッファ管理手段によって前記データトークンの記憶用に割り当てられたアドレスへのポインタである、過程と、
前記バッファ管理手段がメモリリストにアクセスし、当該メモリリスト内に、アドレスおよび割り当てられたアドレスへのポインタを生成する過程であって、前記アクセスされるメモリリストが、追加のアドレス割当て用の複数のリンクされるメモリリストを含む、過程と、
前記アクセスされるメモリリストに、前記割り当てられたアドレスへの前記ポインタを書き込む過程であって、当該ポインタが、前記割り当てられたアドレスを数珠繋ぎにリンクする過程と、
前記選択されたキューから後続のデータトークンを受け取ると、追加のアドレス割当てのために他のメモリリストに移動し、前記割り当てられたアドレスを数珠繋ぎにリンクする追加のポインタを前記他のメモリリストに生成する過程と、
を含む、方法。
〔態様2〕
態様1に記載の方法において、前記複数のリンクされるメモリリストが、並列処理可能にリンクされる、第1のメモリリスト、第2のメモリリスト、第3のメモリリストおよび第4のメモリリストを有する、方法。
〔態様3〕
態様2に記載の方法において、データトークンに割り当てられた複数のアドレスが、ポインタにより、複数の並列処理可能な前記メモリリストにわたってリンクされる、方法。
〔態様4〕
態様3に記載の方法において、前記割り当てられた複数のアドレスが、前記バッファ管理手段により生成されるテイルポインタおよびヘッドポインタによってリンクされる、方法。
〔態様5〕
態様1に記載の方法において、前記キュー手段が、
前記リンクされるメモリリスト内の、前記割り当てられたアドレスに、データトークンをエンキューするエンキュー部、および
前記リンクされるメモリリスト内の、前記割り当てられたアドレスから、データトークンをデキューするデキュー部を含む、方法。
〔態様6〕
態様5に記載の方法において、前記エンキュー部が、前記バッファ管理手段に、複数のデータトークンを一度にエンキューする要求を生成し、当該複数のデータトークンのアドレスが、ポインタによって、前記複数のメモリリストにわたってリンクされる、方法。
〔態様7〕
態様5に記載の方法において、前記デキュー部が、前記バッファ管理手段に、複数のデータトークンを一度にデキューする要求を生成し、当該複数のデータトークンのアドレスが、ポインタによって、前記複数のメモリリストにわたってリンクされる、方法。
〔態様8〕
態様1に記載の方法において、追加のアドレス割当てのための前記複数のリンクされるメモリリストには、アドレスの利用可能性に従って動的に値の代入が行われる、方法。
〔態様9〕
態様8に記載の方法において、前記複数のリンクされるメモリリストに値の代入を行うことが、要求されたアドレスが全て割り当てられるまで、各メモリリストをとおしてラウンドロビン方式で連続的に実行される、方法。
〔態様10〕
データをメモリバッファにキューイングする装置であって、
複数のキューから、所与のキューを選択し、選択されたキューからデータトークンを受け取るセレクタ手段と、
アドレスおよびポインタを要求する手段に応答する管理手段であって、前記ポインタが、当該管理手段によって前記データトークンの記憶用に割り当てられたアドレスへのポインタである、管理手段と、
前記管理手段に応答して、メモリリストにアクセスし、当該メモリリスト内に、アドレスおよび前記割り当てられたアドレスへのポインタを生成する割当て手段であって、前記アクセスされるメモリリストが、追加のアドレス割当て用の複数のリンクされるメモリリストを含む、割当て手段と、
を備え、
前記割当て手段が、前記アクセスされるメモリリストに、前記割り当てられたアドレスへの前記ポインタを書き込み、当該ポインタが、前記割り当てられたアドレスを数珠繋ぎにリンクするものであり、
前記割当て手段が、前記選択されたキューから後続のデータトークンを受け取ると、追加のアドレス割当てのために他のメモリリストに移動し、前記割り当てられたアドレスを数珠繋ぎにリンクする追加のポインタを前記他のメモリリストに生成する、
装置。
〔態様11〕
態様10に記載の装置において、前記複数のリンクされるメモリリストが、並列処理可能にリンクされる、第1のメモリリスト、第2のメモリリスト、第3のメモリリストおよび第4のメモリリストを有する、装置。
〔態様12〕
態様11に記載の装置において、前記データトークンに割り当てられた複数のアドレスが、ポインタにより、複数の並列処理可能な前記メモリリストにわたってリンクされる、装置。
〔態様13〕
態様12に記載の装置において、前記割り当てられた複数のアドレスが、前記バッファ管理手段により生成されるテイルポインタおよびヘッドポインタによってリンクされる、装置。
〔態様14〕
態様10に記載の装置において、前記キュー手段が、
前記リンクされるメモリリスト内の、前記割り当てられたアドレスに、データトークンをエンキューするエンキュー部、および
前記リンクされるメモリリスト内の、前記割り当てられたアドレスから、データトークンをデキューするデキュー部を含む、装置。
〔態様15〕
態様14に記載の装置において、前記エンキュー部が、前記バッファ管理手段に、複数のデータトークンを一度にエンキューする要求を生成し、当該複数のデータトークンのアドレスが、ポインタによって、前記複数のメモリリストにわたってリンクされる、装置。
〔態様16〕
態様15に記載の装置において、前記デキュー部が、前記バッファ管理手段に、複数のデータトークンを一度にデキューする要求を生成し、当該複数のデータトークンのアドレスが、ポインタによって、前記複数のメモリリストにわたってリンクされる、装置。
〔態様17〕
態様10に記載の装置において、追加のアドレス割当てのための前記複数のリンクされるメモリリストには、アドレスが利用可能性に従って動的に値の代入が行われる、装置。
〔態様18〕
態様10に記載の装置において、前記複数のリンクされるメモリリストが、要求されたアドレスが全て割り当てられるまで、各メモリリストをとおしてラウンドロビン方式で連続的に、値の代入が行われる、装置。
〔態様19〕
少なくとも1つのプロセッサと、
命令を有する少なくとも1つのコンピュータ読み取り可能な記憶装置と、を備えるシステムであって、
前記命令は、実行されると、データパケットをキューイングする方法を実施させ、当該方法は、
複数のキューから、所与のキューを選択する過程と、
選択されたキューからデータトークンを受け取る過程と、
キュー手段が、バッファ管理手段に、アドレスおよびポインタを要求する過程であって、前記ポインタが、当該バッファ管理手段によって前記データトークンの記憶用に割り当てられたアドレスへのポインタである、過程と、
前記バッファ管理手段がメモリリストにアクセスし、当該メモリリスト内に、アドレスおよび割り当てられたアドレスへのポインタを生成する過程であって、前記アクセスされるメモリリストが、追加のアドレス割当て用の複数のリンクされるメモリリストを含む、過程と、
前記アクセスされるメモリリストに、前記割り当てられたアドレスへの前記ポインタを書き込む過程であって、当該ポインタが、前記割り当てられたアドレスを数珠繋ぎにリンクする過程と、
前記選択されたキューから後続のデータトークンを受け取ると、追加のアドレス割当てのために他のメモリリストに移動し、前記割り当てられたアドレスを数珠繋ぎにリンクする追加のポインタを前記他のメモリリストに生成する過程と
を含む、システム。
〔態様20〕
態様19に記載のシステムにおいて、前記複数のリンクされるメモリリストが、並列処理可能にリンクされる、第1のメモリリスト、第2のメモリリスト、第3のメモリリストおよび第4のメモリリストを有する、システム。
〔態様21〕
態様19に記載のシステムにおいて、前記データトークンに割り当てられた複数のアドレスが、ポインタにより、複数の並列処理可能な前記メモリリストにわたってリンクされる、システム。
〔態様22〕
態様20に記載のシステムにおいて、前記割り当てられた複数のアドレスが、前記バッファ管理手段により生成されるテイルポインタおよびヘッドポインタによってリンクされる、システム。
〔態様23〕
態様19に記載のシステムにおいて、さらに、
前記リンクされるメモリリスト内の、前記割り当てられたアドレスに、データトークンをエンキューするエンキュー部と、
前記リンクされるメモリリスト内の、前記割り当てられたアドレスから、データトークンをデキューするデキュー部と、
を備える、システム。
〔態様24〕
態様23に記載のシステムにおいて、前記エンキュー部が、前記バッファ管理手段に、複数のデータトークンを一度にエンキューする要求を生成し、当該複数のデータトークンのアドレスが、ポインタによって、前記複数のメモリリストにわたってリンクされる、システム。
〔態様25〕
態様23に記載のシステムにおいて、前記デキュー部が、前記バッファ管理手段に、複数のデータトークンを一度にデキューする要求を生成し、当該複数のデータトークンのアドレスが、ポインタによって、前記複数のメモリリストにわたってリンクされる、システム。
130,200 管理手段
150 メモリバッファ
所与のキュー
00,Q01,Q02,Q03 メモリリスト

Claims (25)

  1. データをメモリバッファにキューイングする方法であって、
    複数のパケットから、所与のパケットを選択する過程と、
    前記選択されたパケットのデータトークンを受け取る過程と、
    キュー手段が、バッファ管理手段に、前記データトークンの記憶用のアドレスへのポインタを要求する過程と、
    前記バッファ管理手段がメモリリストにアクセスし、当該メモリリスト内にアドレスを割り当て、かつ、これら割り当てられたアドレスへのポインタを生成する過程であって、前記アクセスされるメモリリストが複のリンクされるメモリリストを含前記複数のリンクされるメモリリストに追加のアドレスが割り当てられる、過程と、
    前記アクセスされるメモリリストに、前記割り当てられたアドレスへの前記ポインタを書き込む過程であって、当該ポインタが、前記割り当てられたアドレスを数珠繋ぎにリンクする過程と、
    前記選択されたパケットの後続のデータトークンを受け取ると、この後続のデータトークンの記憶用に追加のアドレス当てられる他のメモリリストに移動し、当該他のメモリリストに前記割り当てられたアドレスを数珠繋ぎにリンクする追加のポインタであって、前記割り当てられたアドレスへのポインタを生成する過程と、
    を含む、方法。
  2. 請求項1に記載の方法において、前記複数のリンクされるメモリリストが、第1のメモリリスト、第2のメモリリスト、第3のメモリリストおよび第4のメモリリストを有する、方法。
  3. 請求項2に記載の方法において、データトークンに割り当てられた複数のアドレスが、前記割り当てられたアドレスへのポインタにより、複数の並列処理可能な前記メモリリストにわたってリンクされる、方法。
  4. 請求項3に記載の方法において、前記割り当てられた複数のアドレスが、前記割り当てられたアドレスへのポインタであって、前記バッファ管理手段により生成されるテイルポインタによってリンクされる、方法。
  5. 請求項1に記載の方法において、前記キュー手段が、
    前記リンクされるメモリリスト内の、前記割り当てられたアドレスに、データトークンをエンキューするエンキュー部、および
    前記リンクされるメモリリスト内の、前記割り当てられたアドレスから、データトークンをデキューするデキュー部を含む、方法。
  6. 請求項5に記載の方法において、前記エンキュー部が、前記バッファ管理手段に、複数のデータトークンを一度にエンキューする要求を生成し、当該複数のデータトークンのアドレスが、これらアドレスへのポインタによって、前記複数のメモリリストにわたってリンクされる、方法。
  7. 請求項5に記載の方法において、前記デキュー部が、前記バッファ管理手段に、複数のデータトークンを一度にデキューする要求を生成し、当該複数のデータトークンが前記リンクされるメモリリスト内の前記割り当てられたアドレスからデキューされる際には、前記複数のデータトークンのアドレスが、これらアドレスへのポインタによって、前記複数のメモリリストにわたってリンクされている、方法。
  8. 請求項1に記載の方法において、前記追加のアドレスは、前記複数のリンクされるメモリリストのうちの利用可能なメモリ位置に、動的に値の代入が行われて割り当てられる、方法。
  9. 請求項8に記載の方法において、前記複数のリンクされるメモリリストに値の代入を行うことが、要求されたアドレスが全て前記利用可能なメモリ位置に割り当てられるまで、各メモリリストをとおしてラウンドロビン方式で連続的に実行される、方法。
  10. データをメモリバッファにキューイングする装置であって、
    複数のパケットから、所与のパケットを選択し、この選択されたパケットのデータトークンを受け取るセレクタ手段と、
    前記データトークンの記憶用のアドレスへのポインタを要求する手段に応答する管理手段と、
    前記管理手段に応答して、メモリリストにアクセスし、当該メモリリスト内にアドレスを割り当て、かつ、これら割り当てられたアドレスへのポインタを生成する割当て手段であって、前記アクセスされるメモリリストが複数のリンクされるメモリリストを含前記複数のリンクされるメモリリストに追加のアドレスが割り当てられる、割当て手段と、
    を備え、
    前記割当て手段が、前記アクセスされるメモリリストに、前記割り当てられたアドレスへの前記ポインタを書き込み、当該ポインタが、前記割り当てられたアドレスを数珠繋ぎにリンクするものであり、
    前記割当て手段が、前記選択されたパケットの後続のデータトークンを受け取ると、この後続のデータトークンの記憶用に追加のアドレス当てられる他のメモリリストに移動し、当該他のメモリリストに前記割り当てられたアドレスを数珠繋ぎにリンクする追加のポインタであって、前記割り当てられたアドレスへのポインタを生成する、
    装置。
  11. 請求項10に記載の装置において、前記複数のリンクされるメモリリストが、第1のメモリリスト、第2のメモリリスト、第3のメモリリストおよび第4のメモリリストを有する、装置。
  12. 請求項11に記載の装置において、前記データトークンに割り当てられた複数のアドレスが、前記割り当てられたアドレスへのポインタにより、複数の並列処理可能な前記メモリリストにわたってリンクされる、装置。
  13. 請求項12に記載の装置において、前記割り当てられた複数のアドレスが、前記割り当てられたアドレスへのポインタであって、前記バッファ管理手段により生成されるテイルポインタによってリンクされる、装置。
  14. 請求項10に記載の装置において、前記キュー手段が、
    前記リンクされるメモリリスト内の、前記割り当てられたアドレスに、データトークンをエンキューするエンキュー部、および
    前記リンクされるメモリリスト内の、前記割り当てられたアドレスから、データトークンをデキューするデキュー部を含む、装置。
  15. 請求項14に記載の装置において、前記エンキュー部が、前記バッファ管理手段に、複数のデータトークンを一度にエンキューする要求を生成し、当該複数のデータトークンのアドレスが、これらアドレスへのポインタによって、前記複数のメモリリストにわたってリンクされる、装置。
  16. 請求項15に記載の装置において、前記デキュー部が、前記バッファ管理手段に、複数のデータトークンを一度にデキューする要求を生成し、当該複数のデータトークンが前記リンクされるメモリリスト内の前記割り当てられたアドレスからデキューされる際には、前記複数のデータトークンのアドレスが、これらアドレスへのポインタによって、前記複数のメモリリストにわたってリンクされている、装置。
  17. 請求項10に記載の装置において、前記追加のアドレスは、前記複数のリンクされるメモリリストのうちの利用可能なメモリ位置に、動的に値の代入が行われて割り当てられる、装置。
  18. 請求項17に記載の装置において、前記複数のリンクされるメモリリストが、要求されたアドレスが全て前記利用可能なメモリ位置に割り当てられるまで、各メモリリストをとおしてラウンドロビン方式で連続的に、値の代入が行われる、装置。
  19. 少なくとも1つのプロセッサと、
    命令を有する少なくとも1つのコンピュータ読み取り可能な記憶装置と、を備えるシステムであって、
    前記命令は、実行されると、データパケットをキューイングする方法を実施させ、当該方法は、
    複数のパケットから、所与のパケットを選択する過程と、
    前記選択されたパケットのデータトークンを受け取る過程と、
    キュー手段が、バッファ管理手段に、前記データトークンの記憶用のアドレスへのポインタを要求する過程と、
    前記バッファ管理手段がメモリリストにアクセスし、当該メモリリスト内にアドレスを割り当て、かつ、これら割り当てられたアドレスへのポインタを生成する過程であって、前記アクセスされるメモリリストが複数のリンクされるメモリリストを含前記複数のリンクされるメモリリストに追加のアドレスが割り当てられる、過程と、
    前記アクセスされるメモリリストに、前記割り当てられたアドレスへの前記ポインタを書き込む過程であって、当該ポインタが、前記割り当てられたアドレスを数珠繋ぎにリンクする過程と、
    前記選択されたパケットの後続のデータトークンを受け取ると、この後続のデータトークンの記憶用に追加のアドレス当てられる他のメモリリストに移動し、当該他のメモリリストに前記割り当てられたアドレスを数珠繋ぎにリンクする追加のポインタであって、前記割り当てられたアドレスへのポインタを生成する過程と
    を含む、システム。
  20. 請求項19に記載のシステムにおいて、前記複数のリンクされるメモリリストが、第1のメモリリスト、第2のメモリリスト、第3のメモリリストおよび第4のメモリリストを有する、システム。
  21. 請求項19に記載のシステムにおいて、前記データトークンに割り当てられた複数のアドレスが、前記割り当てられたアドレスへのポインタにより、複数の並列処理可能な前記メモリリストにわたってリンクされる、システム。
  22. 請求項20に記載のシステムにおいて、前記割り当てられた複数のアドレスが、前記割り当てられたアドレスへのポインタであって、前記バッファ管理手段により生成されるテイルポインタによってリンクされる、システム。
  23. 請求項19に記載のシステムにおいて、さらに、
    前記リンクされるメモリリスト内の、前記割り当てられたアドレスに、データトークンをエンキューするエンキュー部と、
    前記リンクされるメモリリスト内の、前記割り当てられたアドレスから、データトークンをデキューするデキュー部と、
    を備える、システム。
  24. 請求項23に記載のシステムにおいて、前記エンキュー部が、前記バッファ管理手段に、複数のデータトークンを一度にエンキューする要求を生成し、当該複数のデータトークンのアドレスが、これらアドレスへのポインタによって、前記複数のメモリリストにわたってリンクされる、システム。
  25. 請求項23に記載のシステムにおいて、前記デキュー部が、前記バッファ管理手段に、複数のデータトークンを一度にデキューする要求を生成し、当該複数のデータトークンが前記リンクされるメモリリスト内の前記割り当てられたアドレスからデキューされる際には、前記複数のデータトークンのアドレスが、これらアドレスへのポインタによって、前記複数のメモリリストにわたってリンクされている、システム。
JP2015170003A 2015-03-31 2015-08-31 複数のリンクされるメモリリストを利用する方法および装置 Active JP6535253B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/675,450 2015-03-31
US14/675,450 US10484311B2 (en) 2015-03-31 2015-03-31 Method and apparatus for using multiple linked memory lists

Publications (3)

Publication Number Publication Date
JP2016195375A JP2016195375A (ja) 2016-11-17
JP2016195375A5 JP2016195375A5 (ja) 2017-05-18
JP6535253B2 true JP6535253B2 (ja) 2019-06-26

Family

ID=53496442

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015170003A Active JP6535253B2 (ja) 2015-03-31 2015-08-31 複数のリンクされるメモリリストを利用する方法および装置

Country Status (6)

Country Link
US (2) US10484311B2 (ja)
EP (1) EP3076621A1 (ja)
JP (1) JP6535253B2 (ja)
KR (1) KR102082020B1 (ja)
CN (2) CN106209679B (ja)
TW (1) TWI684344B (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102984083B (zh) * 2012-11-19 2018-07-24 南京中兴新软件有限责任公司 队列管理方法及装置
US10484311B2 (en) * 2015-03-31 2019-11-19 Cavium, Llc Method and apparatus for using multiple linked memory lists
CN105162724B (zh) * 2015-07-30 2018-06-26 华为技术有限公司 一种数据入队与出队方法及队列管理单元
US10833843B1 (en) 2015-12-03 2020-11-10 United Services Automobile Association (USAA0 Managing blockchain access
KR101948988B1 (ko) * 2016-12-12 2019-02-15 주식회사 엘지유플러스 캐시를 이용한 파일 실행 방법 및 그 장치
CN108462646B (zh) * 2017-02-17 2020-08-25 华为技术有限公司 一种报文处理方法及装置
US10402320B1 (en) * 2018-02-27 2019-09-03 Oracle International Corporation Verifying the validity of a transition from a current tail template to a new tail template for a fused object
US10901887B2 (en) 2018-05-17 2021-01-26 International Business Machines Corporation Buffered freepointer management memory system
CN112311696B (zh) * 2019-07-26 2022-06-10 瑞昱半导体股份有限公司 网络封包接收装置及方法
US11240151B2 (en) * 2019-12-10 2022-02-01 Juniper Networks, Inc. Combined input and output queue for packet forwarding in network devices
CN113132449A (zh) * 2020-01-16 2021-07-16 京东方科技集团股份有限公司 一种调度方法、装置及设备
US11437081B2 (en) 2020-08-12 2022-09-06 Taiwan Semiconductor Manufacturing Company Limited Buffer control of multiple memory banks
US11043250B1 (en) * 2020-08-12 2021-06-22 Taiwan Semiconductor Manufacturing Company Limited Buffer control of multiple memory banks
CN112559400A (zh) * 2020-12-03 2021-03-26 南京盛科网络有限公司 多级调度装置、方法、网络芯片及计算机可读存储介质
CN116438787A (zh) * 2020-12-22 2023-07-14 华为技术有限公司 低延迟软件定义广域网架构
KR20220109213A (ko) 2021-01-28 2022-08-04 하준우 발코니 문

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3117133B2 (ja) 1999-02-16 2000-12-11 日本電気株式会社 フレーム組み立て回路及びフレーム組み立て方法
US7627870B1 (en) * 2001-04-28 2009-12-01 Cisco Technology, Inc. Method and apparatus for a data structure comprising a hierarchy of queues or linked list data structures
US7003597B2 (en) * 2003-07-09 2006-02-21 International Business Machines Corporation Dynamic reallocation of data stored in buffers based on packet size
US7290110B2 (en) * 2003-09-11 2007-10-30 International Business Machines Corporation System and method of squeezing memory slabs empty
US7796627B2 (en) 2004-08-12 2010-09-14 Broadcom Corporation Apparatus and system for coupling and decoupling initiator devices to a network using an arbitrated loop without disrupting the network
JP4952642B2 (ja) 2008-04-15 2012-06-13 富士通株式会社 パケット転送装置およびパケット破棄方法
US8650364B2 (en) * 2008-05-28 2014-02-11 Vixs Systems, Inc. Processing system with linked-list based prefetch buffer and methods for use therewith
CN101605100B (zh) * 2009-07-15 2012-04-25 华为技术有限公司 队列存储空间的管理方法和设备
US8312243B2 (en) 2009-07-16 2012-11-13 Lantiq Deutschland Gmbh Memory management in network processors
JP2011254149A (ja) 2010-05-31 2011-12-15 Nippon Telegr & Teleph Corp <Ntt> 情報処理装置、情報処理方法およびプログラム
US8565092B2 (en) * 2010-11-18 2013-10-22 Cisco Technology, Inc. Dynamic flow redistribution for head of line blocking avoidance
CN102437929B (zh) * 2011-12-16 2014-05-07 华为技术有限公司 队列管理中的数据出队方法及装置
US9438527B2 (en) * 2012-05-24 2016-09-06 Marvell World Trade Ltd. Flexible queues in a network switch
US9674086B2 (en) * 2013-11-05 2017-06-06 Cisco Technology, Inc. Work conserving schedular based on ranking
US10484311B2 (en) * 2015-03-31 2019-11-19 Cavium, Llc Method and apparatus for using multiple linked memory lists

Also Published As

Publication number Publication date
CN113242186A (zh) 2021-08-10
US20160294735A1 (en) 2016-10-06
KR20160117108A (ko) 2016-10-10
CN106209679A (zh) 2016-12-07
US10484311B2 (en) 2019-11-19
TW201703475A (zh) 2017-01-16
JP2016195375A (ja) 2016-11-17
US20200044989A1 (en) 2020-02-06
TWI684344B (zh) 2020-02-01
US11082366B2 (en) 2021-08-03
EP3076621A1 (en) 2016-10-05
KR102082020B1 (ko) 2020-02-26
CN106209679B (zh) 2021-05-11

Similar Documents

Publication Publication Date Title
JP6535253B2 (ja) 複数のリンクされるメモリリストを利用する方法および装置
US9280297B1 (en) Transactional memory that supports a put with low priority ring command
US10740006B2 (en) System and method for enabling high read rates to data element lists
US10397144B2 (en) Receive buffer architecture method and apparatus
JP7138190B2 (ja) ネットワークスイッチのキュー
US10146468B2 (en) Addressless merge command with data item identifier
WO2016019554A1 (zh) 一种队列管理的方法和装置
US9785367B2 (en) System and method for enabling high read rates to data element lists
US11757801B1 (en) Spatial dispersion buffer
US9342313B2 (en) Transactional memory that supports a get from one of a set of rings command
US9996468B1 (en) Scalable dynamic memory management in a network device
US11201831B1 (en) Packed ingress interface for network apparatuses
JP2006253790A (ja) パケット伝送装置及びパケット伝送方法
US12021763B1 (en) Spatial dispersion buffer
US9164794B2 (en) Hardware prefix reduction circuit
US11888691B1 (en) Foldable ingress buffer for network apparatuses
US9268600B2 (en) Picoengine pool transactional memory architecture

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170323

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170323

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180312

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180403

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180619

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181218

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190225

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190531

R150 Certificate of patent or registration of utility model

Ref document number: 6535253

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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