JP2003228515A - チャンク・ベースの構造を使用してリンク・リスト待ち行列を形成するための方法および装置 - Google Patents

チャンク・ベースの構造を使用してリンク・リスト待ち行列を形成するための方法および装置

Info

Publication number
JP2003228515A
JP2003228515A JP2002366200A JP2002366200A JP2003228515A JP 2003228515 A JP2003228515 A JP 2003228515A JP 2002366200 A JP2002366200 A JP 2002366200A JP 2002366200 A JP2002366200 A JP 2002366200A JP 2003228515 A JP2003228515 A JP 2003228515A
Authority
JP
Japan
Prior art keywords
chunk
queue
block
queue structure
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.)
Pending
Application number
JP2002366200A
Other languages
English (en)
Other versions
JP2003228515A5 (ja
Inventor
Jian-Guo Chen
チェン ジアン−グオ
David E Clune
イー. クルーン ディヴィッド
Hanan Z Moller
ゼット. モーラー ハナン
David P Sonnier
ピー. ソニアー ディヴィッド
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.)
Agere Systems LLC
Original Assignee
Agere Systems LLC
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 Agere Systems LLC filed Critical Agere Systems LLC
Publication of JP2003228515A publication Critical patent/JP2003228515A/ja
Publication of JP2003228515A5 publication Critical patent/JP2003228515A5/ja
Pending legal-status Critical Current

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access 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
    • 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/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/06Indexing scheme relating to groups G06F5/06 - G06F5/16
    • G06F2205/064Linked list, i.e. structure using pointers, e.g. allowing non-contiguous address segments in one logical buffer or dynamic buffer space allocation

Landscapes

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

Abstract

(57)【要約】 【課題】 チャンク・ベースの構造を使用してリンク・
リスト待ち行列を形成する。 【解決手段】 処理システムが、処理回路と、この処理
回路に結合されたメモリ回路とを含む。メモリ回路は、
データ単位のリストを表す少なくとも1つの待ち行列構
造を維持するように構成可能である。待ち行列構造は、
待ち行列構造のブロックの少なくともいくつかが、2つ
以上のデータ単位を含む2つ以上のブロック(例えば、
チャンク)に分割される。待ち行列構造のブロックの少
なくともいくつかが、待ち行列構造の次のブロックに対
するポインタ(例えば、ネクスト・チャンク・ポイン
タ)を含むことが可能である。そのような待ち行列構造
のため、処理回路は、待ち行列構造の第1のブロックを
アドレス指定し、次に、次のブロックを指すように第1
のブロックのネクスト・ブロック・ポインタを設定する
ことにより、待ち行列構造の次のブロックをアドレス指
定するように構成可能である。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般に、データ処
理システムに関し、より詳細には、チャンク・ベースの
構造を使用してリンク・リスト待ち行列を形成するため
の技術に関する。
【0002】
【従来の技術】周知のとおり、パケット処理システムの
ルータまたはその他のタイプのパケット・スイッチで
は、ルータを通過し、かつ/またはルータによって処理
されるパケットが、少なくとも一時的に、パケット・バ
ッファ・メモリの中で維持される。通常、リンク・リス
ト待ち行列として知られるメモリ・データ構造が、パケ
ット・バッファ・メモリに関連して維持される。リンク
・リスト待ち行列は、各パケットに関連するデータが記
憶されたパケット・バッファ・メモリの中の各メモリ位
置をそれぞれが指すポインタのリストを含む。
【0003】従来の待ち行列構造は、通常、1つの連続
する順次リストの形で、パケット・バッファ・メモリの
中で現在、記憶されている各パケットに関連する各ポイ
ンタを記憶する。ただし、リストの中の各ポインタは、
待ち行列が常駐するメモリの不連続なメモリ位置で記憶
することも可能である。パケット・バッファ・メモリか
らのパケットが、ルータによって行われる何らかの動作
の際に処理されるとき、そのパケットに関連するポイン
タが獲得されるようにリンク・リスト待ち行列にアクセ
スが行われ、アドレス指定が行われなければならない。
したがって、従来のリンク・リスト構造では、ポインタ
が獲得される必要があり、パケットが処理されることに
なるたびに毎回、待ち行列へのアクセスが行われなけれ
ばならない。
【0004】しかし、ルータまたはその他のパケット・
スイッチに関連する処理速度が増加する(例えば、毎秒
10ギガビット以上)につれて、リンク・リスト待ち行
列を維持するのに使用されるメモリに関連する入力およ
び出力の帯域幅、ならびにアクセス待ち時間が、クリテ
ィカルになっている。つまり、パケット・ポインタが必
要とされるたびに毎回、従来の待ち行列へのアクセスが
行われなければならないことから、待ち行列メモリは、
重大なボトルネックとなる可能性がある。
【0005】したがって、データ処理システムにおける
単一の不連続なリンク・リスト待ち行列の使用に関連す
る以上の欠点、およびその他の欠点に対処する技術が必
要とされていることは明白である。
【0006】
【発明が解決しようとする課題】本発明は、複数のメモ
リ・チャンク・ベースの構造、またはブロック・ベース
の構造を使用して、これにより、データ処理システムに
おける従来のリンク・リスト待ち行列の使用に関連する
欠点に対処するリンク・リスト待ち行列を形成するため
の技術を提供する。
【0007】
【課題を解決するための手段】本発明の一態様では、処
理システムが、処理回路と、この処理回路に結合された
メモリ回路とを含む。メモリ回路は、データ単位(例え
ば、パケット・メモリの中に記憶されたパケットに対す
るポインタ)のリストを表す少なくとも1つの待ち行列
構造を維持するように構成可能である。この待ち行列構
造は、待ち行列構造のブロックの少なくともいくつか
が、2つ以上のデータ単位を含む2つ以上のブロック
(例えば、チャンク)に分割される。さらに、待ち行列
構造のブロックの少なくともいくつかが、待ち行列構造
の次のブロックに対するポインタ(例えば、ネクスト・
チャンク・ポインタ)を含むことが可能である。
【0008】そのような待ち行列構造のため、処理回路
は、待ち行列構造の第1のブロックをアドレス指定し、
つまり第1のブロックにアクセスし、次に、次のブロッ
クを指すように第1のブロックのネクスト・ブロック・
ポインタを設定することにより、待ち行列構造の次のブ
ロックをアドレス指定するように構成可能である。
【0009】有利には、所与のブロックの中のデータ単
位は、メモリの中で連続して位置しているため(各ブロ
ックは、必ずしも連続して位置している必要はない
が)、処理回路は、ブロックの中の各データ単位を効率
的にアドレス指定するのに、そのブロックをアドレス指
定するだけでよい。したがって、データ単位がパケット
・ポインタであるケースでは、従来の待ち行列構造のよ
うに、ポインタが獲得される必要があり、パケットが処
理されることになるたびに毎回、待ち行列構造にアクセ
スが行われる必要はない。それどころか、本発明の待ち
行列構造には、次のブロックの中のポインタが必要とさ
れるときにアクセスが行われるだけでよい。これは、次
のブロックを指すように現在のブロックのネクスト・ブ
ロック・ポインタを設定することによって達せられる。
そのような待ち行列アクセス技術により、待ち行列メモ
リの帯域幅要件およびアクセス待ち時間要件が相当に軽
減され、また、待ち行列メモリが、処理動作におけるボ
トルネックになることが防止される。
【0010】本発明の別の態様では、待ち行列構造の可
用ブロックを表すポインタの少なくとも1つのリスト
(例えば、空きチャンク・リスト)が維持される。この
ようにして、待ち行列構造にデータ単位(例えば、パケ
ット・ポインタ)が追加される際に可用ブロック・リス
トが参照され、また待ち行列構造からデータ単位を除去
し、かつ/またはブロックを開放する際に可用ブロック
・リストが更新される。一実施形態では、2つの別個の
可用ブロック・リストが並んで使用されて、待ち行列構
造の可用ブロックが特定され、可用ブロックへのアクセ
スが行われる速度が高められる。
【0011】例示の実施形態では、本発明の待ち行列構
造は、ルータまたはその他のタイプのパケット・スイッ
チのトラフィック・マネージャに関連していることが可
能である。さらに、本発明のブロック・ベースの待ち行
列構造を維持し、この待ち行列構造にアクセスするのに
使用される処理回路およびメモリ回路は、1つまたは複
数の集積回路上で実施することができる。
【0012】本発明の以上およびその他の目的、特徴、
および利点は、添付の図面とともに読むべき本発明の例
示的な実施形態の以下の詳細な説明から明白となる。
【0013】
【発明の実施の形態】本発明を以下に、例としてのパケ
ット処理システムに関連して説明する。ただし、本発明
は、より一般的には、従来のリンク・リスト待ち行列に
関連するメモリ帯域幅問題およびアクセス待ち時間問題
を回避することが望まれる任意のデータ処理システムに
適用可能であることを理解されたい。
【0014】さらに、本発明の技術は、より一般的に
は、リンク・リスト構造が必要とされ、または所望さ
れ、次の2つの条件のうちどちらか1つが存在する任意
のアプリケーションに適用することができる。すなわ
ち、(i)リンク・リストを記憶するメモリにアクセス
する待ち時間が、リンク・リストを追跡するのに必要な
時間より長いか、または(ii)各エントリ当たりリン
ク・リストを記憶する空間を節約することが所望され
る。
【0015】さらに、本発明は、より一般的には、待ち
行列を維持し、本発明のブロック・ベースの手法、また
はチャンク・ベースの手法の利点を得ることが必要とさ
れる、または望ましい任意の状況に適用可能である。例
えば、本発明の技術は、本発明のチャンキング技術が、
リンク・リストを追跡するのに必要なキャッシュ・ミス
の回数を最小限に抑える利点を得るソフトウェア実施形
態に適用することができる。さらに、本発明の技術は、
各リンク・リスト・エントリごとにネクスト・エントリ
・ポインタを必要としないことにより、相当なメモリ節
約を可能にする。
【0016】本明細書で使用する用語の「プロセッサ」
は、例として、限定なしに、マイクロプロセッサ、中央
処理装置(CPU)、デジタル信号プロセッサ(DS
P)、特定用途向け集積回路(ASIC)、または他の
タイプのデータ処理デバイスまたは処理回路、ならびに
以上およびその他のデバイスまたは回路の部分および組
み合わせを利用して実施するのが可能であることを理解
されたい。
【0017】例としての実施形態における本発明は、リ
ンク・リスト待ち行列構造の可用ブロックを追跡するた
めにデュアル可用ブロック・リスト(空きチャンク・リ
スト)と併せてブロック・ベース、またはチャンク・ベ
ースのリンク・リスト待ち行列構造を使用することによ
り、単一の連続するリンク・リスト待ち行列構造の使用
に帰することができる欠点を除去するか、または少なく
とも軽減する。利点の中でもとりわけ、本発明は、待ち
行列メモリの帯域幅要件およびアクセス待ち時間要件を
相当に軽減し、また待ち行列メモリが、処理動作におい
てボトルネックになるのを防止する。
【0018】図1は、本発明を実施することができるパ
ケット処理システム100を示している。システム10
0は、プロセッサ102と、待ち行列メモリ104と、
パケット・バッファ・メモリ106とを含む。プロセッ
サ102は、パケットおよびその他のパケット・データ
が受信されるネットワーク108と、パケットの交換を
制御するスイッチ構造110との間のインターフェース
を提供するように構成される。ネットワークは、例とし
て、限定なしに、非同期転送モード(ATM)網または
同期式光ネットワーク(SONET)であることが可能
である。プロセッサ102、待ち行列メモリ104、お
よびパケット・バッファ・メモリ106は、例えば、ル
ータまたはスイッチのライン・カードまたはポート・カ
ードの上で実施された1つまたは複数の集積回路として
実施することができる。そのような構成では、スイッチ
構造110は、一般に、ルータまたはスイッチの一部で
あると考えられる。
【0019】図1で示したシステム要素の特定の構成
は、例示する例に過ぎないことを理解されたい。より詳
細には、前述したとおり、本発明は、任意のタイプのパ
ケット・プロセッサに従って実施することができ、また
特定のパケット処理アプリケーションには全く限定され
ない。
【0020】図2は、本発明の実施形態による待ち行列
メモリのチャンク・ベースのリンク・リスト構造20
0、ならびに2つの空きチャンク・リスト202および
204を示している。チャンク・ベースのリンク・リス
ト構造200、ならびに2つの空きチャンク・リスト2
02および204は、プロセッサ102(図1)の制御
下で待ち行列メモリ104(図1)の中に常駐し、維持
されることが可能であることを理解されたい。チャンク
・ベースのリンク・リスト構造200、ならびに2つの
空きチャンク・リスト202および204は、パケット
・バッファ・メモリ106(図1)に関連して使用する
ことができる。
【0021】図示するとおり、リンク・リスト待ち行列
構造200は、有利には、Nが、待ち行列メモリがサポ
ートするように設計されているチャンクの数に等しい整
数であることが可能である、チャンク1、チャンク
2...チャンクNで示されたメモリの複数のチャンク
またはブロックに分割される。各チャンクは、パケット
・バッファ・メモリの中に現在、記憶されているパケッ
トに対するポインタ(PTR)またはプロトコル・デー
タ単位(PDU)を含む。周知のとおり、ポインタは、
所与のパケットのパケット・バッファ・メモリ位置(例
えば、パケット・バッファ・メモリ106)を指す。さ
らに、待ち行列構造の各チャンクは、待ち行列構造の次
のブロックに対するポインタを含む。このポインタは、
ネクスト・チャンク・ポインタ(NXT CHK PT
R)と呼ばれる。他のタイプのデータ単位も、待ち行列
構造200の中に記憶することができる。
【0022】したがって、図2で示すとおり、各チャン
クは、8つのパケットに関連するポインタが記憶され、
ネクスト・チャンク・ポインタも記憶されている連続の
メモリ位置から成る。もちろん、チャンク・サイズは、
用途に応じてより大きい、またはより小さいことが可能
である。したがって、チャンク1は、PDU1から8に
関するポインタ、ならびに次のチャンクに対する、すな
わち、チャンク2に対するポインタを含み、チャンク2
は、PDU9から16に関するポインタ、ならびに次の
チャンクに対する、すなわち、チャンク3に対するポイ
ンタを含み、以下同様である。
【0023】待ち行列構造にパケット・ポインタを追加
すること(待ち行列に入れる動作)、および待ち行列構
造からパケット・ポインタを除去すること(待ち行列解
除動作)を含む2つの別個の動作を待ち行列構造200
に対して行うことができる。通常、そうであるように、
データは、待ち行列構造のヘッド(または開始)で待ち
行列から除去され、待ち行列のテール(または終端)で
待ち行列に追加される。データが追加され、かつ/また
は除去される中で待ち行列構造の現在のヘッドおよびテ
ールを把握しておくため、ヘッドPDUポインタ位置
が、テールPDUポインタ位置とともに維持される。
【0024】図2で示すとおり、待ち行列解除動作は、
以前に行われており、チャンク1の中のPDU1から7
に関するポインタが、待ち行列構造200から除去され
ているようになっているものと想定する。したがって、
チャンク1の中のPDU8に関するポインタ位置は、待
ち行列の現在のヘッドを表す。同様に、PDU42に関
するポインタ位置は、待ち行列の現在のテールを表す。
PDU42PTRの後、待ち行列構造200の中のすべ
てのメモリ位置またはエントリは、その構造の中の次の
チャンクに対するそれぞれのポインタを除けば、空であ
る。
【0025】待ち行列構造200が与えられると、プロ
セッサ102は、待ち行列構造のチャンク1をアドレス
指定し、またはチャンク1にアクセスし、次に、チャン
ク2を指すようにチャンク1のネクスト・ブロック・ポ
インタを設定することにより、待ち行列構造のチャンク
2をアドレス指定することができる。もちろん、必要な
場合、チャンク1の後、チャンク2以外のチャンクにア
クセスすることも可能である。
【0026】明白なとおり、従来の待ち行列構造に優っ
て待ち行列構造200が有する1つの大きな利点は、各
チャンクが、連続のメモリ位置から、すなわち、リニア
・アドレス範囲から成ることである。したがって、PD
U1から8にアクセスするのに、待ち行列構造に一回、
アクセスするだけでよい。すなわち、チャンク1にアク
セスするだけでよい。チャンク1、およびチャンク1が
どこで開始するかの知識を所与として、プロセッサは、
PDU1から8に関するポインタが、待ち行列メモリの
連続するリニア・アドレス範囲の中に位置していること
が分かる。したがって、PDUごとに待ち行列構造にア
クセスする必要がなく、各チャンクごとにアクセスする
だけでよい。
【0027】やはり、図2で、空きチャンク・リスト2
02および204が示されている。前述したとおり、こ
れらのリストもまた、待ち行列構造200と併せて待ち
行列メモリ104の中に記憶され、維持される(プロセ
ッサ102に従って)。この空きチャンク・リストを使
用して、待ち行列構造200の中に記憶される新しいデ
ータ単位に可用チャンクが割り振られる。この2つの空
きチャンク・リストが並んで使用されて、待ち行列構造
200の可用チャンクが特定され、可用チャンクにアク
セスが行われる速度が高められる。
【0028】図2では、1つだけの待ち行列構造200
を示しているが、待ち行列メモリ104は、すべてがプ
ロセッサ102の制御下にあることが可能な複数のその
ような待ち行列構造を含んでいてもよいことを理解され
たい。また、本発明のそのような待ち行列構造は、パケ
ット・バッファ・メモリの中に記憶されたパケットに対
するポインタだけを記憶する必要はなく、その他のタイ
プのデータ単位も記憶することができる。本発明の待ち
行列構造の他の多くの適用例が、当分野の技術者には認
められよう。
【0029】次に、図3A、3B、および3Cを参照し
て、本発明のチャンク・ベースの待ち行列構造および空
きチャンク・リストに従って行われる例としての方法を
説明する。
【0030】図3Aは、本発明の実施形態による待ち行
列メモリの自己初期化空きチャンク・リスト(例えば、
図2のリスト202および204)の方法を示してい
る。実質的に、このように待ち行列構造(例えば、待ち
行列構造200)自体が、自動的に初期化される。前述
したとおり、待ち行列の中に記憶される新しいデータ単
位にチャンクを割り振るのに1つまたは複数の空きチャ
ンク・リストが必要とされる。本発明は、好ましくは、
空きチャンクのリストを2つの別個のリストに分割し
て、待ち行列に入れられるデータのために空きチャンク
をフェッチする際、「ピンポン」技術またはタンデム技
術(リスト間で交替すること)を可能にする。つまり、
第1のリストが、まず照会され、次に、第2のリストが
照会され、第1のリストが後に続き、以下同様である。
【0031】リストは、まず、待ち行列メモリを使用し
て直線的に自己初期化されて(ステップ302)、メモ
リの空きチャンクが獲得される。空きリストが、プログ
ラミングされた最大のメモリ深度に達したとき、2つの
空きチャンク・リストからの任意の新しいチャンクが割
り振られる。2つの空きチャンク・リストのヘッド・ポ
インタが維持される(ステップ304)。このヘッド・
ポインタは、制御を行うプロセッサ(例えば、プロセッ
サ102)に関連するレジスタの中で維持することがで
きる。
【0032】図3Bは、本発明の実施形態に従って待ち
行列メモリにデータを追加する方法を示している。PD
Uが待ち行列に入れられる際、パケット・バッファ・メ
モリの中のそのメモリ位置に対するポインタに、空きチ
ャンク・リストの1つからのアドレスが割り当てられる
(ステップ310)。次に、PDUポインタが、割り当
てられたチャンクのその第1のリニア・アドレスに記憶
される(ステップ312)。待ち行列に入れられる次の
データ単位にそれぞれ、チャンクがいっぱいになるまで
チャンクの中の次のリニア・アドレスが割り振られる
(ステップ314)。この時点で、別の空きチャンクが
割り振られ(2つの空きチャンク・リストの1つか
ら)、空きリストから割り振られた新しいチャンクを指
すように第1のチャンクからのネクスト・チャンク・ポ
インタが設定される(ステップ316)。待ち行列に関
するヘッド・ポインタおよびテール・ポインタとともに
1つのネクスト・チャンク・ポインタが保存される。こ
れにより、後の待ち行列解除動作でリンク・リストを追
跡するのを可能にするのに必要な時間が提供される。
【0033】図3Cは、本発明の実施形態による待ち行
列メモリからデータを除去し、チャンクを開放する方法
を示している。チャンクの開放は、チャンクの最終デー
タ単位が除去または待ち行列解除されたときに生じる。
この動作の際、空きチャンク・リスト(すなわち、ピン
ポン動作で使用されるべき次の空きチャンク・リスト)
の1つの現在のヘッドを指すように、開放されたチャン
クにおけるネクスト・チャンク・ポインタが設定され、
開放されたチャンクに対するポインタが、空きリストの
新しいヘッドになる(ステップ320)。
【0034】空きリストが空である場合、開放されたチ
ャンクのネクスト・チャンク・ポインタは、自らを指す
ように、また空きリストのヘッドになるように設定され
る(ステップ322)。これは、このチャンクが、空き
リストの終端にあるのを示すように行われ、このこと
は、リスト消耗条件を表す。したがって、待ち行列解除
動作が、空きチャンク・リストを構築し、また、自己初
期化も、このように行われるのが可能である。また、2
つの空きチャンク・リストのどちらにチャンクが戻され
るべきかを示すステータス・ビットが維持される。この
ビットは、開放されたチャンクが戻されるたびに毎回、
切り替えられ、両方の空きリストが、同じ長さに保たれ
ることを確実にする。
【0035】動作が、チャンクの割振りと開放を同時に
行うことを必要とするとき、空きチャンク・リストは使
用されない。代わりに、待ち行列解除プロセスで開放さ
れたチャンクが、待ち行列に入れるプロセスで割り振ら
れるチャンクとして使用される。このようにして、チャ
ンク・メモリ・サイクルがより有効に使用される。
【0036】有利には、本明細書で説明するチャンク・
ベースの待ち行列構造の手法を使用することにより、処
理システム全体の最大速度よりはるかに低い速度でリン
ク・リストにアクセスすることができる。これは、デー
タ単位が、チャンク内で直線的に記憶され、ネクスト・
チャンク・ポインタ、ならびに待ち行列のヘッドおよび
テールが常に把握されていることによる。新しいネクス
ト・チャンク・ポインタを獲得するのに必要とされる時
間は、チャンクの長さによって決まる。
【0037】図4は、図1のシステム100の一部分の
例としてのルータ・ライン(またはポート)カード実施
形態またはスイッチ・ライン(またはポート)カード実
施形態を示している。この実施形態では、処理システム
は、少なくとも1つの集積回路402が実施されたライ
ン・カード400を含む。集積回路402は、プロセッ
サ102と、待ち行列メモリ104と、パケット・バッ
ファ・メモリ106とを含む。
【0038】一実施形態では、集積回路402を使用し
てパケット処理システムに関連するトラフィック・マネ
ージャの機能を実施することができる。トラフィック・
マネージャは、一般に、他の機能もあるが、とりわけ、
バッファ管理およびパケット・スケジューリングを行
う。
【0039】図4で示した処理システムの部分は、図示
を明確にするために相当に単純化している。ただし、処
理システムは、複数のそのようなライン・カードを含む
ルータまたはスイッチを含むのが可能であり、またライ
ン・カードのそれぞれが、複数の集積回路を含むのが可
能であることを理解されたい。
【0040】本発明の例としての実施形態を添付の図面
に関連して説明してきたが、本発明は、それらの実施形
態そのものに限定されず、本発明の範囲または趣旨を逸
脱することなく、当分野の技術者によって他の様々な変
更および改変が行われるのが可能であることを理解され
たい。
【図面の簡単な説明】
【図1】本発明を実施することができるパケット処理シ
ステムを示すブロック図である。
【図2】本発明の実施形態による待ち行列メモリのチャ
ンク・ベースのリンク・リスト構造および2つの空きチ
ャンク・リストを示すブロック図である。
【図3A】本発明の実施形態による待ち行列メモリの空
きチャンク・リストを初期化する方法を示す流れ図であ
る。
【図3B】本発明の実施形態による待ち行列メモリにデ
ータを追加する方法を示す流れ図である。
【図3C】本発明の実施形態による待ち行列メモリから
データを除去し、チャンクを開放する方法を示す流れ図
である。
【図4】ルータまたはスイッチのライン・カード上で実
施されたトラフィック・マネージャ集積回路の一部とし
ての本発明の待ち行列メモリの実施を示すブロック図で
ある。
フロントページの続き (72)発明者 ディヴィッド イー. クルーン アメリカ合衆国 07830 ニュージャーシ ィ,カリフォン,マウント グローヴ ロ ード 150 (72)発明者 ハナン ゼット. モーラー アメリカ合衆国 78723 テキサス,オー スチン,メイプルリーフ ドライヴ 5511 (72)発明者 ディヴィッド ピー. ソニアー アメリカ合衆国 78750 テキサス,オー スチン,フォックスツリー コーヴ 7103 Fターム(参考) 5B060 AA07 AC19 5K034 EE11 HH23 HH54 MM25

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 処理回路と、 前記処理回路に結合され、データ単位のリストを表す少
    なくとも1つの待ち行列構造を維持するように構成可能
    であり、前記待ち行列構造が、2つ以上のブロックに分
    割され、前記待ち行列構造の前記ブロックの少なくとも
    いくつかが、2つ以上のデータ単位を含むメモリ回路と
    を含む処理システム。
  2. 【請求項2】 前記データ単位が、パケット・メモリの
    中に記憶されたパケットに対するポインタである請求項
    1に記載のシステム。
  3. 【請求項3】 前記待ち行列構造の前記ブロックの少な
    くともいくつかが、前記待ち行列構造の次のブロックに
    対するポインタを含む請求項1に記載のシステム。
  4. 【請求項4】 前記処理回路が、(i)前記待ち行列構
    造の第1のブロックをアドレス指定し、また(ii)次
    のブロックを指すように前記第1のブロックの前記ネク
    スト・ブロック・ポインタを設定することによって前記
    待ち行列構造の前記次のブロックをアドレス指定するよ
    うに構成可能である請求項3に記載のシステム。
  5. 【請求項5】 所与のブロックの中の前記データ単位
    が、前記メモリ回路の中で連続的に位置する請求項1に
    記載のシステム。
  6. 【請求項6】 前記待ち行列構造の可用ブロックを表す
    ポインタの少なくとも1つのリストをさらに含み、前記
    可用ブロック・リストが、前記待ち行列構造に関連して
    維持される請求項1に記載のシステム。
  7. 【請求項7】 前記待ち行列構造が、トラフィック・マ
    ネージャに関連する請求項1に記載のシステム。
  8. 【請求項8】 前記処理回路および前記メモリ回路の少
    なくともどちらかが、集積回路上で実施される請求項1
    に記載のシステム。
  9. 【請求項9】 データ処理システムにおいて使用する方
    法であって、 メモリ回路の中で、データ単位のリストを表す少なくと
    も1つの待ち行列構造を維持し、前記待ち行列構造が、
    2つ以上のブロックに分割され、前記待ち行列構造の前
    記ブロックの少なくともいくつかが、2つ以上のデータ
    単位を含む方法。
  10. 【請求項10】 2つ以上のデータ単位を表す第1のデ
    ータ・ブロック要素と、 前記第1のデータ・ブロック要素から分割され、やはり
    2つ以上のデータ単位を表す少なくとも第2のデータ・
    ブロック要素とを含み、前記第1のデータ・ブロック要
    素および前記少なくとも第2のデータ・ブロック要素
    が、データ単位のリストを表す待ち行列構造を累加的に
    形成するデータ構造。
JP2002366200A 2001-12-21 2002-12-18 チャンク・ベースの構造を使用してリンク・リスト待ち行列を形成するための方法および装置 Pending JP2003228515A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/029,680 US6754795B2 (en) 2001-12-21 2001-12-21 Methods and apparatus for forming linked list queue using chunk-based structure
US10/029680 2001-12-21

Publications (2)

Publication Number Publication Date
JP2003228515A true JP2003228515A (ja) 2003-08-15
JP2003228515A5 JP2003228515A5 (ja) 2006-02-02

Family

ID=21850308

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002366200A Pending JP2003228515A (ja) 2001-12-21 2002-12-18 チャンク・ベースの構造を使用してリンク・リスト待ち行列を形成するための方法および装置

Country Status (5)

Country Link
US (1) US6754795B2 (ja)
EP (1) EP1321863A3 (ja)
JP (1) JP2003228515A (ja)
KR (1) KR100958507B1 (ja)
TW (1) TW200305076A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009532954A (ja) * 2006-03-31 2009-09-10 クゥアルコム・インコーポレイテッド 高速メディアアクセス制御に関するメモリ管理

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030036746A1 (en) 2001-08-16 2003-02-20 Avi Penner Devices for intrabody delivery of molecules and systems and methods utilizing same
US7113516B1 (en) * 2000-11-28 2006-09-26 Texas Instruments Incorporated Transmit buffer with dynamic size queues
US7216204B2 (en) * 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US7487505B2 (en) * 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US7225281B2 (en) * 2001-08-27 2007-05-29 Intel Corporation Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms
DE10162046A1 (de) * 2001-12-17 2003-06-26 Thomson Brandt Gmbh Wiedergabegerät mit einem Zwischenspeicher zum Verringern der mittleren Zugriffszeit auf einen Informationsträger
US7610451B2 (en) * 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
US6892278B2 (en) * 2002-03-05 2005-05-10 Sun Microsystems, Inc. Method and apparatus for efficiently implementing a last-in first-out buffer
DE10215719A1 (de) * 2002-04-10 2003-10-30 Philips Intellectual Property Datenspeicher
US7337275B2 (en) * 2002-08-13 2008-02-26 Intel Corporation Free list and ring data structure management
US6907508B2 (en) * 2003-02-26 2005-06-14 Emulex Design & Manufacturing Corporation Structure and method for managing available memory resources
US7035988B1 (en) * 2003-03-17 2006-04-25 Network Equipment Technologies, Inc. Hardware implementation of an N-way dynamic linked list
US7702627B2 (en) 2004-06-22 2010-04-20 Oracle International Corporation Efficient interaction among cost-based transformations
CN100440854C (zh) * 2004-06-25 2008-12-03 中国科学院计算技术研究所 一种网络处理器的数据包接收接口部件及其存储管理方法
US7814042B2 (en) * 2004-08-17 2010-10-12 Oracle International Corporation Selecting candidate queries
US8271093B2 (en) 2004-09-17 2012-09-18 Cardiac Pacemakers, Inc. Systems and methods for deriving relative physiologic measurements using a backend computing system
US7813808B1 (en) 2004-11-24 2010-10-12 Remon Medical Technologies Ltd Implanted sensor system with optimized operational and sensing parameters
US7751421B2 (en) * 2004-12-29 2010-07-06 Alcatel Lucent Traffic generator and monitor
US7849163B1 (en) 2005-08-11 2010-12-07 Qurio Holdings, Inc. System and method for chunked file proxy transfers
US7955268B2 (en) 2006-07-21 2011-06-07 Cardiac Pacemakers, Inc. Multiple sensor deployment
US7756573B2 (en) 2006-09-05 2010-07-13 Cardiac Pacemakers, Inc. Implantable medical device diagnostic data acquisition and storage
US20080270728A1 (en) * 2007-04-25 2008-10-30 Hewlett-Packard Development Company, L.P. Burst structure allocation for parallel cache pre-loading
GB2459839B (en) * 2008-05-02 2012-02-29 Broadcom Corp Management of storage and retrieval of data labels in random access memory
US8543743B2 (en) * 2009-01-27 2013-09-24 Microsoft Corporation Lock free queue
US9575842B2 (en) * 2011-02-24 2017-02-21 Ca, Inc. Multiplex backup using next relative addressing
US20140321466A1 (en) * 2013-04-25 2014-10-30 Mediatek Inc. Packet processing method for getting packet information from link list and related packet processing apparatus thereof
CN104125176A (zh) * 2013-04-25 2014-10-29 联发科技股份有限公司 封包处理方法以及封包处理装置
CN106330741B (zh) * 2015-06-15 2020-04-24 深圳市中兴微电子技术有限公司 一种报文传输方法和装置
KR102033401B1 (ko) 2016-01-05 2019-11-08 한국전자통신연구원 효율적으로 파일을 생성하기 위한 분산 파일 시스템 및 방법
US11036438B2 (en) * 2017-05-31 2021-06-15 Fmad Engineering Kabushiki Gaisha Efficient storage architecture for high speed packet capture
US10693787B2 (en) * 2017-08-25 2020-06-23 Intel Corporation Throttling for bandwidth imbalanced data transfers
CN113961363A (zh) * 2020-07-20 2022-01-21 中移(苏州)软件技术有限公司 一种数据缓存方法和电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02201558A (ja) * 1989-01-30 1990-08-09 Fujitsu Ltd 領域管理処理方式
JPH04312157A (ja) * 1991-04-11 1992-11-04 Mitsubishi Electric Corp データ転送装置
JPH06334652A (ja) * 1993-04-29 1994-12-02 Internatl Business Mach Corp <Ibm> 通信システムにおいてデータをマルチキャストする方法及び装置
JPH11510323A (ja) * 1995-07-19 1999-09-07 フジツウ ネットワーク コミュニケーションズ,インコーポレイテッド Atm交換機の多重レベル制御用リンクドリスト構造
JP2001184191A (ja) * 1999-12-22 2001-07-06 Alps Electric Co Ltd データ処理装置
JP2001512600A (ja) * 1997-02-14 2001-08-21 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリ内の物理的順序によって時間順を維持するための方法および装置
JP2001527240A (ja) * 1997-12-19 2001-12-25 テレフオンアクチーボラゲツト エル エム エリクソン(パブル) データ構造内の管理

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978359A (en) 1995-07-19 1999-11-02 Fujitsu Network Communications, Inc. Allocated and dynamic switch flow control
US6233244B1 (en) 1997-02-14 2001-05-15 Advanced Micro Devices, Inc. Method and apparatus for reclaiming buffers
AUPP638698A0 (en) * 1998-10-06 1998-10-29 Canon Kabushiki Kaisha Efficient memory allocator utilising a dual free-list structure
US6578131B1 (en) * 1999-04-27 2003-06-10 Microsoft Corporation Scaleable hash table for shared-memory multiprocessor system
US6526314B1 (en) * 1999-08-20 2003-02-25 Cardiac Pacemakers, Inc. Data management system for implantable cardiac device

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02201558A (ja) * 1989-01-30 1990-08-09 Fujitsu Ltd 領域管理処理方式
JPH04312157A (ja) * 1991-04-11 1992-11-04 Mitsubishi Electric Corp データ転送装置
JPH06334652A (ja) * 1993-04-29 1994-12-02 Internatl Business Mach Corp <Ibm> 通信システムにおいてデータをマルチキャストする方法及び装置
JPH11510323A (ja) * 1995-07-19 1999-09-07 フジツウ ネットワーク コミュニケーションズ,インコーポレイテッド Atm交換機の多重レベル制御用リンクドリスト構造
JP2001512600A (ja) * 1997-02-14 2001-08-21 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリ内の物理的順序によって時間順を維持するための方法および装置
JP2001527240A (ja) * 1997-12-19 2001-12-25 テレフオンアクチーボラゲツト エル エム エリクソン(パブル) データ構造内の管理
JP2001184191A (ja) * 1999-12-22 2001-07-06 Alps Electric Co Ltd データ処理装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009532954A (ja) * 2006-03-31 2009-09-10 クゥアルコム・インコーポレイテッド 高速メディアアクセス制御に関するメモリ管理
US8139593B2 (en) 2006-03-31 2012-03-20 Qualcomm Incorporated Memory management for high speed media access control
US8594112B2 (en) 2006-03-31 2013-11-26 Qualcomm Incorporated Memory management for high speed media access control

Also Published As

Publication number Publication date
TW200305076A (en) 2003-10-16
EP1321863A2 (en) 2003-06-25
EP1321863A3 (en) 2003-07-02
KR100958507B1 (ko) 2010-05-17
US6754795B2 (en) 2004-06-22
US20030120879A1 (en) 2003-06-26
KR20030053030A (ko) 2003-06-27

Similar Documents

Publication Publication Date Title
JP2003228515A (ja) チャンク・ベースの構造を使用してリンク・リスト待ち行列を形成するための方法および装置
US10015117B2 (en) Header replication in accelerated TCP (transport control protocol) stack processing
US6831923B1 (en) Pipelined multiple issue packet switch
US5668809A (en) Single chip network hub with dynamic window filter
US7327674B2 (en) Prefetching techniques for network interfaces
US5963543A (en) Error detection and correction apparatus for an asynchronous transfer mode (ATM) network device
US5625825A (en) Random number generating apparatus for an interface unit of a carrier sense with multiple access and collision detect (CSMA/CD) ethernet data network
KR100437146B1 (ko) 지능망 인터페이스 장치 및 통신 가속 시스템
US5802287A (en) Single chip universal protocol multi-function ATM network interface
JP5066702B2 (ja) インテリジェントネットワークストレージインタフェースシステム及びデバイス
US5640399A (en) Single chip network router
US20030112818A1 (en) Deferred queuing in a buffered switch
EP1398922B1 (en) Balanced linked lists for high performance data buffers in a network device
EP0797335A2 (en) Network adapter
EP1045558B1 (en) Very wide memory TDM switching system
WO2001040960A1 (en) Fifo-based network interface supporting out-of-order processing
JP2005512227A (ja) Fifoメモリにおけるインターリーブされた多数の同時トランザクションからのデータの受信
US7072342B1 (en) Reordering of out-of-order packets
US7860120B1 (en) Network interface supporting of virtual paths for quality of service with dynamic buffer allocation
EP1554644A2 (en) Method and system for tcp/ip using generic buffers for non-posting tcp applications
US6542941B1 (en) Efficient command delivery and data transfer
US20080263171A1 (en) Peripheral device that DMAS the same data to different locations in a computer
US6850999B1 (en) Coherency coverage of data across multiple packets varying in sizes
US7245616B1 (en) Dynamic allocation of packets to tasks
WO2007074343A2 (en) Processing received data

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051208

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080811

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081111

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081114

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091021

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100121

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100421

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20100421

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100517