JP2008042916A - スイッチの出力キュー構造をバイパスする方法、論理装置及びシステム - Google Patents

スイッチの出力キュー構造をバイパスする方法、論理装置及びシステム Download PDF

Info

Publication number
JP2008042916A
JP2008042916A JP2007202624A JP2007202624A JP2008042916A JP 2008042916 A JP2008042916 A JP 2008042916A JP 2007202624 A JP2007202624 A JP 2007202624A JP 2007202624 A JP2007202624 A JP 2007202624A JP 2008042916 A JP2008042916 A JP 2008042916A
Authority
JP
Japan
Prior art keywords
packet
request
transfer request
output queue
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.)
Granted
Application number
JP2007202624A
Other languages
English (en)
Other versions
JP4894670B2 (ja
Inventor
Takeshi Shimizu
剛 清水
Koyo Nakagawa
幸洋 中川
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2008042916A publication Critical patent/JP2008042916A/ja
Application granted granted Critical
Publication of JP4894670B2 publication Critical patent/JP4894670B2/ja
Expired - Fee Related 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
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6205Arrangements for avoiding head of line blocking
    • 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/50Queue scheduling
    • H04L47/52Queue scheduling by attributing bandwidth to queues
    • H04L47/527Quantum based scheduling, e.g. credit or deficit based scheduling or token bank
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3036Shared queuing

Landscapes

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

Abstract

【課題】高速なシリアル相互接続に必要なスイッチング速度及びスケーラビリティをもたらすシステム及び論理装置を提供すること。
【解決手段】本発明の特定の実施例では、スイッチの出力キュー構造をバイパスする方法が使用される。特定の実施例における本方法は、スイッチの入力ポートでパケットを受信すること、スイッチのメモリにパケットを格納すること、格納されたパケットに及びスイッチの特定の出力ポートに関連し、格納されたパケットのメモリ内の場所を特定する転送リクエストを生成することを含む。本方法は、特定の出力ポートに関連する出力キュー構造をバイパスすることを転送リクエストにより引き起こすか否かを決定することも含む。本方法は、転送リクエストを用いて、該転送リクエストに関連するパケットをメモリから抽出すること、抽出したパケットを特定の出力ポートから送信することを含む。
【選択図】図1

Description

本発明は一般に通信システムに関連し、特にスイッチの出力キュー構造をバイパスするシステム及び方法に関連する。
高速なシリアル相互接続が通信環境で益々一般化しつつある。その結果、これらの環境でスイッチが演じる役割は益々重要になってきている。しかしながら従来のスイッチは、これらの相互接続をサポートするのに一般に必要とされるスイッチング速度及びスケーラビリティを十分にもたらしてはいない。
本発明の課題は、高速なシリアル相互接続に必要なスイッチング速度及びスケーラビリティをもたらすシステム及び論理装置を提供することである。
本発明の特定の実施例は、パケットをスイッチングすることに関する従来の欠点及び問題点を軽減又は解消する。
本発明の特定の実施例では、スイッチの出力キュー構造をバイパスする方法が使用される。特定の実施例における本方法は、スイッチの入力ポートでパケットを受信するステップと、前記スイッチのメモリに前記パケットを格納するステップと、格納されたパケットに及び前記スイッチの特定の出力ポートに関連し、前記格納されたパケットの前記メモリ内の場所を特定する転送リクエストを生成するステップとを含む。本方法は、前記特定の出力ポートに関連する出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定するステップも含む。本方法は、前記転送リクエストを用いて、該転送リクエストに関連する前記パケットを前記メモリから抽出するステップと、抽出したパケットを前記特定の出力ポートから送信するステップとを含む。
本発明の特定の実施例は1つ以上の利点をもたらす。特定の実施例は、出力モジュール内の出力キュー構造のバイパスをイネーブルに又はディセーブルにできる。出力キュー構造のバイパスをイネーブルにすることは、スイッチを介するパケットの待ち時間(latency)を減らす。出力キュー構造がバイパスされると、パケット送信リクエストは、最初に出力キュー構造中の待ち行列には入れられず、メモリアクセスユニットによって直接的に処理することができ、これにより特定の状況でのパケット伝送レートを増やす。出力キュー構造のバイパスをディセーブルすることは、パケットの厳密な優先処理をもたらす。特定の状況では、バイパスをディセーブルすることによる厳密な優先処理は、バイパスをイネーブルすることによる待ち時間短縮を上回る利点をもたらすかもしれない。ある実施例はこれらの利点の全部又は一部をもたらしてもよいし、全くもたらさなくてもよく、ある実施例は1つ以上の他の技術的利点をもたらし、これらのことは本願に含まれる明細書、特許請求の範囲及び図面から当業者に更に明白になるであろう。
本発明並びにその特徴及び利点の完全な理解を更に図るため、添付図面に関連する以下の詳細な説明が参照される。
図1はシステムエリアネットワーク10の一例を示し、システムエリアネットワークは、1つ以上のサーバーシステム14の間で通信をサポートするシリアルな又は他の相互接続部12と、1つ以上のストレージシステム16と、1つ以上のネットワークシステム18と、相互接続部12を1つ以上の他のネットワークに接続する1つ以上のルーティングシステム20とを含み、該1つ以上の他のネットワークは1つ以上のローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)又は他のネットワークを含む。サーバーシステム14各々は1つ以上の中央処理ユニット(CPU)及び1つ以上のメモリユニットを含む。ストレージシステム16各々は1つ以上のチャネルアダプタ、1つ以上のディスクアダプタ及び1つ以上のCPUモジュールを含む。相互接続部12は1つ以上のスイッチ22を含み、そのスイッチは特定の実施例では以下で更に詳細に説明されるようなイーサーネットスイッチを含む。システムエリアネットワーク10の構成要素は1つ以上のリンクを用いて互いに結合され、そのリンクの各々は1つ以上のコンピュータバス、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、広域ネットワーク(WAN)、インターネット又は他の有線回線、光の、無線の若しくは他のリンクの一部を含んでもよい。システムエリアネットワーク10は特定のコンフィギュレーションで互いに接続された特定の構成要素を含むように説明されるが、適切な如何なるコンフィギュレーションによって互いに結合された適切な如何なる構成要素も含んでよい適切な如何なるシステムエリアネットワークをも本発明は想定している。
図2はシステムエリアネットワーク10のスイッチ22の一例を示す。スイッチ22は複数のポート24及びスイッチコア26を含む。ポート24の各々はスイッチコア26に及びシステムエリアネットワーク10の構成要素(例えば、サーバーシステム14、ストレージシステム16、ネットワークシステム18、ルーティングシステム20又は別のスイッチ22等)に結合される。第1ポート24は、システムエリアネットワーク10の第1構成要素からのパケットを受信し、そのパケットを第2ポートに切り替えるためにスイッチコア26に伝送し、スイッチコアはシステムエリアネットワーク10の第2構成要素にパケットを伝送する。パケットへの言及は、パケット、データグラム、フレーム又は他のデータユニット等を適切に含んでもよい。スイッチコア26は第1ポート24からのパケットを受信し、以下で更に説明されるようにそのパケットを1つ以上の第2ポート24に切り替える。特定の実施例では、スイッチ22はイーサーネットスイッチを含む。特定の実施例では、スイッチ22はワイヤの速度で又はその近辺でパケットを切り替えることができる。
図3は、スイッチ22のスイッチコア26の一例を示す。スイッチコア26は、ポートモジュール28、ストリームメモリ30、タグメモリ32、入力コントロールアンドセントラルエージェント(ICCA)33、ルーティングモジュール36及びスイッチングモジュール37を含む。スイッチコア26の構成要素は、バス又は他のリンクを用いて互いに結合される。特定の実施例ではスイッチコア26が1つのICの中に組み込まれる。スイッチコア26のデフォルトモードでは、システムエリアネットワーク10の第1構成要素からスイッチコア26によって受信されたパケットは、スイッチコア26が全てのパケットを受信する前に、スイッチコア26からシステムエリアネットワーク10の1つ以上の第2構成要素に伝送可能である。特定の実施例では、カットスルーフォワーディング(cut-through forwarding)は、ストアアンドフォワード(store-and-forward)法を上回る1つ以上の利点(例えば、短縮された待ち時間、削減されたメモリ制約及び増進したスループット等)をもたらす。スイッチコア26は様々なアプリケーション用に構築可能である。非限定的な一例として、イーサーネットスイッチ22(10ギガビットイーサーネットスイッチ22又は特定の実施例のイーサーネットスイッチ22を含む)や、インフィニバンド(INFINIBAND)スイッチ22や、3GIOスイッチ22や、ハイパートランスポート(HYPERTRANSPORT)スイッチ22や、ラピッド(RAPID)IOスイッチ22や、ストレージシステム16,ネットワークシステム18又は双方のためのプロプリエタリバックボーンスイッチ22や、他のスイッチ22等に合わせてスイッチコア26は構築可能である。スイッチコア26は図示の例では12個のポートモジュール28を含んでいるが、スイッチコア26は適切なポートモジュール28をいくつでも含んでよいことに留意すべきである(例えば、22個含んでもよい。)。
ポートモジュール28はスイッチコア26及びスイッチ22のポート24間のインターフェースをもたらす。ポートモジュール28はポート24、ストリームメモリ30、タグメモリ32、ICCA33、ルーティングモジュール36及びスイッチングモジュール37に通信可能に結合される。特定の実施例では、ポートモジュール28は入力ロジック(システムエリアネットワーク10の構成要素からのパケットを受信するため及びパケットをストリームメモリ30に書き込むために使用される)及び出力ロジック(ストリームメモリ30からパケットを読み取るため及びパケットをシステムエリアネットワーク10の構成要素に伝送するために使用される)の双方を含む。代替例として、特定の実施例では、ポートモジュール28は入力ロジックのみを又は出力ロジックのみを含む。ポートモジュール28への言及は、入力ロジック、出力ロジック又は双方を適切に含むポートモジュール28を含んでもよい。ポートモジュール28は到来するフロー(インバウンドフロー)制御用の入力バッファを含んでもよい。イーサーネットスイッチ22では、インバウンドフロー制御にポーズ機能が使用可能であり、ポーズ機能は有効になるまで時間を稼ぐ。ポートモジュール28の入力バッファはパケットの一時的なストレージに使用可能であり、そのパケットはポーズ機能が到来するパケットを止める前に送信される。インバウンドフロー制御用にクレジットが出される場合には入力バッファは必須ではないので、INFINIBANDスイッチ22の場合のように、入力バッファは選択的になる。特定の実施例では、ストリームメモリ30にポートモジュール28を結合するリンクは2つのリンクを含み:その1つは書き込み処理用であり(ポートモジュール28からストリームメモリ30へデータが書き込まれる場合のスイッチコア26の処理を含む)、もう1つは読取処理用である(ストリームメモリ30からポートモジュール28へデータが読み取られる場合のスイッチコア26の処理を含む)。これらのリンクの各々は36ビットを運ぶことができ、ポートモジュール28及びストリームメモリ30間のデータパスを双方向で36ビット幅にする。
システムエリアネットワーク10の第1構成要素から第1ポートモジュール28により受信されたパケットは、第1ポートモジュール28からストリームメモリ30に書き込まれ、ストリームメモリ30から1つ以上の第2ポートモジュール28へ後に読み取られ、第2ポートモジュール28からシステムエリアネットワーク10の1つ以上の第2構成要素への伝送に備える。ポートモジュール28により受信される又はそこから伝送されるパケットに関するものは、ポートモジュール28により受信される又はそこから伝送されるパケット全体でもよいし、適切ならばポートモジュール28により受信される又はそこから伝送されるパケットの一部分だけでもよい。同様に、ストリームメモリ30に書き込まれる又はそこから読み取られるパケットに関連するものは、ストリームメモリ30に書き込まれる又はそこから読み取られるパケット全体でもよいし、適切ならばストリームメモリ30に書き込まれる又はそこから読み取られるパケットの一部分だけでもよい。入力ロジックを含む如何なるポートモジュール(入力ポートモジュール)28もストリームメモリ30に書き込み可能であり、出力ロジックを含む如何なるポートモジュール(入力ポートモジュール)28もストリームメモリ30から読み取り可能である。特定の実施例では、ポートモジュール28は入力ロジック及び出力ロジック双方を含んでもよいし、入力ポートモジュール及び出力ポートモジュール双方を含んでもよい。特定の実施例では、ポートモジュール28によりストリームメモリ30を共有することはヘッドオブラインブロッキング(head-of-line blocking)を排除し(これによりスイッチコア26のスループットを増やし)、スイッチコア26に関連するメモリの制約を減らし、ポートモジュール28でスイッチコア26がより効率的に負荷状態変化に対処できるようにする。
スイッチコア26のシステムメモリ30は論理的にブロック38に分割され、図4に示されるようにワード40に更に分割される。1つの行は1つのブロックを表し、行と列の交差点はブロック38のワード40を表す。特定の実施例では、ストリームメモリ30は4096個のブロック38に分割され、各ブロック38は24個のワード40を含み、1ワード40は72ビットを含む。ストリームメモリ30は特定数のブロック38に分割され、ブロックは特定のビット数を含む特定数のワード40に分割されるように説明及び図示されているが、ストリームメモリ30は適切な如何なる数のブロック38に分割されてもよく、ブロックは適切な如何なるビット数も含む適切な如何なる数のワードに分割されてもよいことを本発明は想定している。パケットサイズはパケット毎に可変である。ブロック38と同数の又はそれより少数のビットを含むパケットが1つのブロック38に書き込まれてよいし、ブロック38より多くのビットを含むパケットが1つより多くのブロック38に書き込まれてもよい(ブロックが互いに隣接していることは必須でない。)。
ブロック38に書き込む場合又はそこから読み出す場合、ポートモジュール28はブロック38のどのワード40からでも開始可能であり、ブロック38のワード40から順番に書き込み又は読み出しを行うことができる。ポートモジュール28は、ブロック38に書き込む又はそこから読み出す場合に、最初のワード40に向けて巡回することもできる。ブロック38は或るアドレスを有し、そのアドレスは書込処理又は読取処理でブロック38を特定するのに使用可能であり、書込処理又は読取処理でブロック38中のワード40を特定するために或るオフセットが使用されてもよい。一例として4176ビット長のパケットを考察する。パケットは58個のワード40(1ワード72ビット)に書き込まれ、ブロック38aのワード40fから始まり、ブロック38bを除外し、ブロック38dのワード40kのワード40kに続く。書込処理では、ブロック38aのワード40fは第1アドレス及び第1オフセットで特定され、ブロック38cのワード40fは第2アドレス及び第2オフセットで特定され、ブロック38dのワード40fは第3アドレス及び第3オフセットで特定される。ブロック38aのワード40fから始まり、ブロック38bを除外し、ブロック38dのワード40kのワード40kに続くストリームメモリ30からパケットが読み出し可能である。読取処理でも、ブロック38aのワード40fは第1アドレス及び第1オフセットで特定され、ブロック38cのワード40fは第2アドレス及び第2オフセットで特定され、ブロック38dのワード40fは第3アドレス及び第3オフセットで特定される。
タグメモリ32はリンクした複数のリストを含み、例えば第1ポートモジュール28が書込を行う次のブロック38を決めるためにセントラル入力コントロールモジュール35により、及び第2ポートモジュール28が読取を行う次のブロック38を決めるために例えば第2ポートモジュール28により、その複数のリストの各々が使用可能である。以下で更に説明されるようにポートモジュール28からストリームメモリ30への書込処理に備えて、ポートモジュール28にとって利用可能な次のブロック38を、セントラルエージェント34が決定するのに使用可能な連結したリストをタグメモリ32は含む。タグメモリ32は複数のエントリを含み、その複数のエントリの少なくともいくつかの各々はストリームメモリ30のブロック38に対応する。ストリームメモリ30の各ブロック38は、タグメモリ32の中に対応するエントリを含む。タグメモリ32の中のエントリは、タグメモリ32内の別のエントリを指すポインタを含むことが可能であり、その結果リンクしたリストになる。
ポートモジュール28からストリームメモリ30への書込処理に備えて、ポートモジュール28にとって利用可能なブロック38に対応するタグメモリ32内のエントリは、共にリンクすることが可能であり、ポートモジュール28が書き込む次のブロック38が、そのリンクしたエントリを用いて決定可能になるようにする。ポートモジュール28からストリームメモリ30への書込処理に備えて、あるブロック38がポートモジュール28にとって利用可能にされた場合、ブロック38に対応するタグメモリ32中のエントリは、ポートモジュール28が書き込んでよい次のブロック38を決定するのに使用されるリンクしたリストに追加可能である。
第1ポートモジュール28が書き込んでよい次のブロック38を決定するのに使用されるタグメモリ32中のリンクしたリストは、次の読取元のブロック38を決定するために1つ以上の第2ポートモジュール28により使用可能でもある。一例として、上述のリンクしたリストを考察する。パケットの第1部分は第1ポートモジュール28から第1ブロック38へ書き込まれ、パケットの第2部分は第1ポートモジュール28から第2ブロック38へ書き込まれ、パケットの第3部分は第1ポートモジュール28から第3ブロック38へ書き込まれる。エンドマーク(終了の印)が第3ブロック38に書き込まれ、パケットの最後の部分が第3ブロック38に書き込まれていることを示してもよい。第2ポートモジュール28は第1ブロック38から読取を行い、第2ポートモジュール28は第1ブロック38から読取を行い、第1エントリ中のポインタを用いて次の読取元のブロック38を決定してもよい。ポインタは第2ポートモジュール28に第2ブロック38を参照させ、第2ポートモジュール28は第1ブロック38からの読取を終了すると、第2ポートモジュール28は第2ブロック38から読取を行う。第2ポートモジュール28が第2ブロック38から読取を行っている間、第2ポートモジュール28は第2エントリ内のポインタを用いて次に読み取るブロック38を確認する。ポインタは第2ポートモジュール28に第3ブロック38を参照させ、第2ポートモジュール28は第2ブロック38からの読取を終了すると、第2ポートモジュール28は第3ブロック38から読取を行う。第2ポートモジュール28は第3ブロック38から読取を行い、第3ブロック38内のエンドマークを用いて、パケットの最終部分が第3ブロックに書き込まれていることを確認する。タグメモリ32内のリンクしたリストは、次に書き込むブロック38を判定するために1つより多くの第1ポートモジュール28で使用することはできないが、次に読み込むブロック38を判定するために、リンクしたリストは1つより多くの第2ポートモジュール28で使用することができる。
様々なパケットは様々な宛先を含むことができ、ストリームメモリ30を介してパケットが進行する順序は先入れ先出し(FIFO)方式でなくてもよい。例えば、第2パケットが受信されて1つ以上の第2ブロックに書き込まれる前に、第1パケットが受信されて1つ以上の第1ブロックに書き込まれる場合を考える。第2パケットは第1パケットより先にストリームメモリ30から読取可能であり、第2ブロック38は第1ブロック38より先に別の書込処理に利用可能になってもよい。特定の実施例では、パケットの指定されたポートモジュール28である全てのポートモジュール28によってパケットがブロック38から読み取られた直後に、ポートモジュール28からブロック38への書込処理に備えて、パケットが書き込まれるストリームメモリ30のブロックが、ポートモジュール28にとって利用可能にされてもよい。パケットの指定されたポートモジュール28は、システムエリアネットワーク10の構成要素に結合されたポートモジュール28を含み、その構成要素はスイッチコア26より下流側にあり、パケットの最終的な又は中間的な宛先である。
書込処理を管理するのにクレジットを利用することは、特別な恩恵をもたらすかもしれない。例えば、クレジットを利用することはスイッチコア26によるカットスルーフォワーディングを促し、レイテンシを減らし、スループットを増やし、スイッチコア26に関連するメモリ制約条件を減らす。書込処理を管理するのにクレジットを利用することは、ヘッドオブラインブロッキングの問題も解消することができ、ポートモジュール28での負荷条件変動に応じて、ポートモジュール28間でメモリリソースを分配する際の多大な柔軟性をもたらす。クレジットは、ストリームメモリ30のブロックに関連し、ブロック38に書込を行うポートモジュール28で利用可能である。クレジットは、クレジットのプール(クレジットプール)の中からポートモジュール28に割り当てられることが可能であり、割当はセントラルエージェント34によって管理される。ポートモジュール28に割り当てられるクレジットに関連するものは、ポートモジュール28からブロック38へ及びその逆への書込動作用にポートモジュール28に利用可能にされるクレジットに対応するブロック38を含む。
クレジットプール中のクレジットは如何なるポートモジュール28に割り当てられてもよく、何らかの特定のポートモジュール28に割り当てられることは必須でない。ポートモジュール28はポートモジュール28にとって利用可能なクレジットのみを利用でき、別のポートモジュール28に利用可能なクレジット又はクレジットプール中にある(未割当の)クレジットを利用できない。クレジットは、そのクレジットがポートモジュール28に割り当てられ、ポートモジュール28がそのクレジットを未だ使用してない場合にポートモジュール28にとって利用可能である。ポートモジュール28に割り当てられたクレジットは、ポートモジュール28がそのクレジットを使用するまで、ポートモジュール28にとって利用可能である。クレジットは一度に1つより多くのポートモジュール28に割り当てられるはずはなく、クレジットは同時に1つより多くのポートモジュール28に利用可能になるはずもない。特定の実施例では、第1ポートモジュール28はクレジットに対応するブロック38にパケットを書き込むためにクレジットを利用する場合、パケットの全ての指定されたポートモジュール28がブロック38からパケットを読み込んだ直後に、そのクレジットはクレジットプールに戻される。
ICCA33はセントラルエージェント34及びセントラル入力制御モジュール35を含む。セントラルエージェント34はクレジットプールからクレジットをポートモジュール28に割り当てる。一例として、セントラルエージェント34は、ポートモジュール28に所定数のクレジットの初期割当を行うことができる。セントラルエージェント34はポートモジュール28に対するクレジットのこの初期割当を、例えばスイッチコア26の起動時点で又はスイッチコア26のリセットに応答して実行可能である。別の例として、セントラルエージェント34は、ポートモジュール28が使用したクレジットを、別のクレジットで置き換えるようにポートモジュール28に割り当てることができる。特定の実施例では、ポートモジュール28が第1クレジットを利用した場合、ポートモジュール28がその第1クレジットを使用したことをポートモジュール28がセントラルエージェント34に通知し、ポートモジュール28がその第1クレジットを使用したことをポートモジュール28がセントラルエージェント34に通知したことに応答して、セントラルエージェント34は第2クレジットをポートモジュール28に割り当ててその第1クレジットを置換し、例えばポートモジュール28により使用されているブロック38の数が適用可能な限界になっていない又はそれを越えていない場合に行われる。特定の実施例では、パケットの受領後ポートモジュール28により要求されるまで、セントラルエージェント34はICCA33のセントラル入力制御モジュール35にポート割当済みクレジットを格納することができる。
ポートモジュール28で使用されているブロック38に関連するものは或るブロックを含むことに留意すべきであり、そのブロックにパケットはポートモジュール28から書き込まれ、そのブロックからは、パケットの指定された全てのポートモジュール28はパケットを読み取ってないものである。適用可能な限界に至るまで、ポートモジュール28で使用されるクレジットを置換することで、ポートモジュール28に利用可能なクレジット数は比較的一定に維持され、ポートモジュール28での負荷状態が変わった場合、ポートモジュール28での負荷状態の増加に応じて、より多くのブロック38がポートモジュール28に供給可能である。ポートモジュール28で使用される多数のブロックに或る状況で或る制限が適用され、ポートモジュールが過剰に多くのブロック38を利用し、過剰に多くの共有メモリリソースを使用し尽くしてしまうことを防いでもよい。この制限はクレジットプール中のクレジット数に基づいて動的に制御されてもよい。クレジットプール中のクレジット数が減少すると、その制限も減少してよい。制限の計算や、クレジットがポートモジュール28に割り当てられる際に従うプロセスは、スイッチコア26を介するパケットのクリティカルパス以外で実行されてもよく、そうすることはスイッチコア26のスイッチング速度の向上に寄与する。
タグメモリ32内のリンクしたリストは、ポートモジュール28に割当可能な次のクレジットを決めるのにセントラルエージェント34で使用可能である。リンクしたリスト中の要素は、ブロック38に対応するタグメモリ32中のエントリを含むことができ、そのエントリはクレジットプール中のクレジットに対応する。一例として、クレジットプール中に4つのクレジットがあるとする。第1クレジットは第1ブロック38に対応し、第2クレジットは第2ブロック38に対応し、第3クレジットは第3ブロック38に対応し、第4クレジットは第4ブロック38に対応する。第1ブロック38に対応するタグメモリ32内の第1エントリは第2ブロック38を指すポインタを含み、第2ブロック38に対応するタグメモリ32内の第2エントリは第3ブロック38を指すポインタを含み、第3ブロック38に対応するタグメモリ32内の第3エントリは第4ブロック38を指すポインタを含む。セントラルエージェント34は第1クレジットをポートモジュール28に割り当て、セントラルエージェント34が第1クレジットをポートモジュール28に割り当てる場合、第1エントリ中のポインタを利用して、ポートモジュール28に割り当てる次のクレジットを確認する。ポインタはセントラルエージェント34に第2ブロック38を参照させ、セントラルエージェント34が第1クレジットをポートモジュール28に割り当て終えた場合に、セントラルエージェント34は第2クレジットをポートモジュール28に割り当てる。セントラルエージェント34が第2クレジットをポートモジュール28に割り当てる場合、セントラルエージェント34は第2エントリ中のポインタを利用して、ポートモジュール28に割り当てる次のクレジットを確認する。ポインタはセントラルエージェント34に第3ブロック38を参照させ、セントラルエージェント34が第2クレジットをポートモジュール28に割り当て終えた場合に、セントラルエージェントは第3クレジットをポートモジュール28に割り当てる。セントラルエージェント34が第3クレジットをポートモジュール28に割り当てる場合、セントラルエージェント34は第3エントリ中のポインタを利用して、ポートモジュール28に割り当てる次のクレジットを確認する。ポインタはセントラルエージェント34に第4ブロック38を参照させ、セントラルエージェント34が第3クレジットをポートモジュール28に割り当て終えた場合に、セントラルエージェントは第4クレジットをポートモジュール28に割り当てる。
ブロック38に対応するクレジットがクレジットプールに戻された場合、ブロック38に対応するタグメモリ32中のエントリはリンクしたリストの最後に追加可能であり、セントラルエージェント34はポートモジュール28に割り当てる次のクレジットを決定するためにそのリストを利用する。一例として上記のリンクしたリストを考察する。第4エントリがリンクしたリストの最終要素であった場合、第5ブロック38に対応する第5エントリがクレジットプールに追加されたならば、第5ブロック38に対応するタグメモリ32内の第5エントリを指すポインタを含めるように第4エントリが修正される。タグメモリ32中のエントリ各々はストリームメモリ30のブロック38に対応するので、ブロック38を指すポインタもタグメモリ32内のエントリを指す。
ポートモジュール28が到来するパケットを受信すると、そのパケットをストリームメモリ30に書き込むのに十分なクレジットがポートモジュール28にとって利用可能か否かをポートモジュール28は判別する。ポートモジュール28はそれを行うのに例えば、ポートモジュール28が書込に利用可能なクレジット数を示すセントラルエージェント34のカウンタを読んでもよい。或いは、ポートモジュール28はセントラルエージェント34から自動的にその情報を受信してもよい。特定の実施例では、パケットをストリームメモリ30に書き込むのに十分なクレジットがポートモジュール28に利用可能であったならば、ポートモジュール28は1つ以上のクレジットを用いてパケットをストリームメモリ30に書き込むことができる。特定の実施例では、パケットをストリームメモリ30に書き込むのに十分なクレジットがポートモジュール28に利用可能でなかったならば、ポートモジュール28はそのパケットを入力バッファに書き込むことができ、後に、パケットをストリームメモリ30に書き込むのに十分なクレジットがポートモジュール28に利用可能になった場合に、1つ以上のクレジットを用いてパケットをストリームメモリ30に書き込む。ポートモジュール28がパケットを入力バッファに書き込む代替例として、ポートモジュール28はそのパケットを落とす(ドロップする)こともできる。特定の実施例では、パケットの一部分のみをストリームメモリ30に書き込む程度に十分なクレジットしかポートモジュール28に利用可能でなかった場合、ポートモジュール28は、1つ以上のクレジットを利用して、ストリームメモリ30に書込可能なパケットのその部分をストリームメモリ30に書き込み、パケットの1つ以上の他の部分を入力バッファに書き込んでもよい。後に、パケットの1つ以上の他の部分をストリームメモリ30に書き込むのに十分なクレジットがポートモジュール28に利用可能になった場合に、1つ以上のクレジットを用いて、ポートモジュール28は1つ以上の他のパケットの部分をストリームメモリ30に書き込む。特定の実施例では、カットスルーフォワーディングのような遅延したカットスルーフォワーディングが、ストアアンドフォワード法を上回る1つ以上の恩恵(例えば、レイテンシの短縮、メモリ制限の減少及びスループットの向上等)をもたらす。パケットをストリームメモリ30に書き込むのに十分なクレジットがポートモジュール28にとって利用可能な否かを判別するポートモジュール28に関するものは、全てのパケットをストリームメモリ30に書き込むこと、パケットの受信した部分のみをストリームメモリ30に書き込むこと又はパケットの少なくとも一部分をストリームメモリ30に書き込むことに十分なクレジットがポートモジュール28にとって利用可能な否かを判別するポートモジュール28を含む。
特定の実施例では、到来するパケットの長さは、パケット全体が受信されるまで知ることができない。このような例の場合、(適用可能な一群の規格に従って)最大パケットサイズが使用され、ポートモジュール28で受信された到来パケットをストリームメモリ30に書き込むのに十分なクレジットがポートモジュール28にとって利用可能か否かを判別する。電気電子技術者協会(IEEE)で公表されている一群の規格(スタンダード)によると、イーサーネットフレームの最大サイズは1518バイトである。事実上の規格によれば、イーサーネットフレームの最大サイズは9000バイトである。非限定的な具体例として、到来するパケットの一部しか受信できないポートモジュール28を考察する。ポートモジュール28は(適用可能な一群の規格に従う)最大パケットサイズを利用し、パケット全体をストリームメモリ30に書き込むのに十分なクレジットがポートモジュール28に利用可能か否かを判別する。ポートモジュール28は、サイダパケットサイズとポートモジュール28に利用可能なクレジット数とを比較することでその判別を行ってもよい。パケット全体をストリームメモリ30に書き込むのに十分なクレジットがポートモジュール28に利用可能であった場合、ポートモジュール28は、パケットの受信した部分を1つ以上のクレジットを用いてストリームメモリ30に書き込み、ポートモジュール28がパケットの1つ以上の他の部分を受信した場合に、1つ以上のクレジットを用いてパケットの1つ以上の他の部分をストリームメモリ30に書き込んでもよい。
上述したように、セントラルエージェント34は、ポートモジュール28に利用可能なクレジット数をカウンタを使ってモニタすることができ、その情報を自動的に又はポートモジュール28がその情報を要求した後で、ポートモジュール28に提供することができる。セントラルエージェント34がポートモジュール28にクレジットを割り当てた場合、セントラルエージェント34はカウンタを或る量だけ増やし、ポートモジュール28がクレジットを使用したことをポートモジュール28がセントラルエージェント34に通知すると、セントラルエージェント34はカウンタを或る量だけ減らす。カウンタの現在値はポートモジュール28に利用可能な現在のクレジット数を反映し、セントラルエージェント34は、1つ以上のクレジットをポートモジュール28に割り当てるか否かを決めるためにそのカウンタを使用してもよい。セントラルエージェント34は、ポートモジュール28で使用されているブロック38の数を第2カウンタを使ってモニタすることもできる。ポートモジュール28がブロック38に書き込んだことをポートモジュール28がセントラルエージェント34に通知した場合、セントラルエージェント34は第2カウンタを所定量だけ増やし、ポートモジュール28が書き込んだブロック38が解放された場合であってブロック38に対応するクレジットがクレジットプールに戻された場合、セントラルエージェントは第2カウンタを所定量だけ減らす。追加的に又は代替的に、セントラル入力制御モジュール35は、ポートモジュール28に利用可能なクレジット数を自身のカウンタを使ってモニタしてもよい。
ポートモジュール28に利用可能なクレジット数は一定に維持されてもよいし、ポートモジュール28に使用されているブロック38の数は制限されてもよい。この制限は、ポートモジュール28、1つ以上の他のポートモジュール28又は双方での負荷状態の変動に応じて変わるかもしれない。特定の実施例では、ポートモジュール28により使用されているブロック38の数は、動的な閾値(クレジットプール中のクレジット数の関数である)に応じて制限される。アクティブなポートモジュール28は、特定の実施例では、1つ以上のブロック38を用いるポートモジュール28を含む。ブロック38を用いるポートモジュール28に関するものは、(ストリームメモリ30からパケットの指定された全てのポートモジュール28へ読み取られていない)少なくとも1つのパケットをストリームメモリ30に書き込むポートモジュール28を含む。動的な閾値は、以下の数式を用いて計算されたクレジットプール中のクレジット数の割合を含み、αはアクティブなポートモジュール28の数に等しく、ρはパラメータである:
Figure 2008042916
ポートモジュール28によりそれぞれ使用されるブロック38の数が、適用される制限(上述の動的な閾値を含む)を越える場合、クレジットプール中のクレジット数が予約され、セントラルエージェント34がクレジットをポートモジュール28に割り当てることを防いでもよい。クレジットプール中の1つ以上のクレジットを予約することは、アクティブなポートモジュール28の数の変化に関連する遷移期間での緩衝手段(クッション)をもたらす。予約されるクレジットの比率は、以下の数式を用いて計算され、αはアクティブなポートモジュール28の数に等しく、ρはパラメータである:
Figure 2008042916
上記の数式によれば、1つのポートモジュール28がアクティブであってρが2の場合、セントラルエージェント34は1/3のクレジットを予約し、高々2/3のクレジットをポートモジュール28に割り当ててよい;2つのポートモジュール28がアクティブであってρが1の場合、セントラルエージェント34は1/3のクレジットを予約し、高々1/3のクレジットをアクティブなポートモジュール28各々に割り当ててよい;そして、12個のポートモジュール28がアクティブであってρが0.5の場合、セントラルエージェント34は2/14のクレジットを予約し、高々1/14のクレジットをアクティブなポートモジュール28各々に割り当ててよい。ポートモジュール28に使用される多数のブロック38に適用される特定の制限が説明されたが、ポートモジュール28に使用される多数のブロック38に適用される適切な如何なる制限をも本発明は想定している。
特定の実施例では、ICCA33のセントラル入力制御モジュール35は、セントラルエージェント34によって特定のポートモジュール28に割り当てられたクレジットを格納し、リンクしたリストを用いてポート割当済みクレジットを管理することができる。ポートモジュール28がセントラル入力制御モジュール35からクレジットを要求した後に、セントラル入力制御モジュール35は特定のイネーブルされたポートモジュール28にポート割当済みクレジットを転送することができる。特定の実施例では、ポート割当済みクレジットは、スイッチングモジュール37を介してセントラル入力制御モジュール35により、イネーブルされたポートモジュール28に転送される。ポートがディセーブルされると、セントラル入力制御モジュール35及びスイッチングモジュール37は、ディセーブルされたポートに割り当てられたクレジットを収集及び解放するように共に機能する。図示の例はICCA33内にセントラル入力制御モジュール35を含んでいるが、別の実施例では、セントラル入力制御モジュール35は適切な如何なる場所に合ってもよく、例えばセントラルエージェント34内でもよいし、ポートモジュール28自身の中でもよい。
イネーブルされたポートに関連する第1ポートモジュール28がパケットをストリームメモリ30に書き込む場合、第1ポートモジュール28はパケットヘッダからの情報(例えば、1つ以上の宛先アドレス)をスイッチングモジュール37を介してルーティングモジュール36に伝送することができ、ルーティングモジュール36は、パケットの指定されたポートモジュールである1つ以上の第2ポートモジュール28を特定するのにその情報を使用可能である。第1ポートモジュール28は、パケットが書き込まれた第1ブロック38のアドレスと、ストリームメモリ30からパケットを読み取るために第2ポートモジュール28により共に使用可能なオフセットとをルーティングモジュール36に伝送する。このアドレスとオフセットの組み合わせ(又はパケットの内容が格納されている場所を特定する何らかの他の情報)は、「ポインタ」として言及される。ルーティングモジュール36は、1つ以上のルーティングテーブルとパケットヘッダ中の情報とを利用して第2ポートモジュール28を識別することができ、第2モジュール28の特定後に、第1ブロック38を指すポインタを各第2ポートモジュール28に通知し、以下で更に詳細に説明されるように、第2ポートモジュール28は出力キューに指示内容を追加することができる。特定の実施例では、ルーティングモジュール36はICCA33を介して第2ポートモジュール28に情報を通知する。
特定の実施例では、スイッチングモジュール37は、ポートモジュール28とルーティングモジュール36及びICCA33双方との間を結合し、ポートがイネーブルされた場合にポートモジュール28及びICCA33又はルーティングモジュール36の間での情報通信を促す。ポートがディセーブルされると、スイッチングモジュール37は、ディセーブルされたポートに関するポート割当済みクレジットの収集及び解放を支援する。1つのスイッチングモジュール37が描かれているが、スイッチングモジュール37は適切なスイッチングモジュールをいくつでも表現してよいことに留意すべきである。更に、スイッチングモジュール37は適切な如何なる数のポートモジュール28で共有されてもよい。更に、スイッチングモジュール37の機能は1つ又はそれ以上のスイッチの他の素子に組み込まれてもよい。
出力ポートモジュール28は1つ以上の出力得キューを含むことができ、出力キューは、ストリームメモリ30書き込まれるパケットのポインタを並べるのに使用され且つ関連するポートモジュール28を介してスイッチコア26から通知される。パケットがストリームメモリ30に書き込まれると、パケットに関連するポインタが各ポートモジュール28の出力キューに追加され、そのポートモジュールからパケットが通知される。図6A,6Bに関連して以下で説明されるように、指定されたポートモジュール28の出力キュー構造は、状況によってはバイパスされてもよい。
特定の実施例では、ポートモジュール28は、1つ以上のリンクしたリストを含むメモリ構造を有し、ポートモジュール281つ以上のレジスタと共にそのリストを用いてストリームメモリ30から読み取る次のパケットを決定する。メモリ構造は複数のエントリを含み、複数の内の少なくともいくつかの各々はストリームメモリ30のブロック38に対応する。ストリームメモリ30の各ブロック38は、そのメモリ構造中の対応するエントリを有する。メモリ構造中のエントリは、メモリ構造中の別のエントリを指すポインタを含み、その結果リンクしたリストが提供される。ポートモジュール28は1つ以上のレジスタを含み、ポートモジュール28はそのレジスタを利用してストリームメモリ30から読み取る次のパケットを判別する。レジスタは書込ポインタ(ライトポインタ)、オフセット及び読取ポインタ(リードポインタ)を含む。書込ポインタは第1ブロックを指し、その第1ブロックに第1パケットが書き込まれており、オフセットは第1ワード40を示し、第1パケットがその第1ワードに書き込まれており、読取ポインタは第1ブロック38を指し、その第1ブロックに第2パケットが書き込まれている(第2パケットは、第1パケットと同じパケットでもよいし、或いは第1パケットと別のパケットでもよい。)。メモリ構造中のエントリ各々はストリームメモリ30のブロック38に対応するので、ブロック38を指すポインタもメモリ構造中のエントリを指す。
ポートモジュール28は、ストリームメモリ30から読み取る次のパケットを決定するのにリードポインタを使用することができる(上記の「第1」パケットに対応する。)。ポートモジュール28は、オフセットを書き込むメモリ構造中の次のエントリを決定するためにライトポインタを使用することができる。ポートモジュール28はそのオフセットを用いてブロック38のワード40を決定し、以下に説明されるようにブロック38のそのワードから読取を開始する。ポートモジュール28は、リードポインタ及びライトポインタを用いて、1つより多くのパケットが出力キューにあるか否かを判定することもできる。出力キューが空でなく且つライトポインタ及びリードポインタ双方が同じブロック38を指していた場合、その出力キューには唯1つのパケットしかない。出力キューの中に唯1つのパケットしか存在していなかった場合、ポートモジュール28はストリームメモリ30から読み取る次のパケットを確認することができ、メモリ構造にアクセスせずに、ストリームメモリ30から次のパケットを読み取ることができる。
出力キューに一切パケットがなかった場合に、第1パケットが出力キューに追加されたならば、(1)レジスタ中のライトポインタは、第1パケットが書き込まれた第1ブロック38を指すように修正され、(2)第1パケットが書き込まれた第1ワード40を示すようにオフセットが修正され、(3)第1パケットが書き込まれた第1ブロック38を指すようにリードポインタも修正される。ポートモジュール28がストリームメモリ30から第1パケットを読み出す前に、第2パケットが出力キューに追加されたならば、(1)第2パケットが書き込まれた第1ブロック38を指すようにライトポインタが修正され、(2)第1パケットが書き込まれた第1ブロック38に対応するメモリ構造中の第1エントリにオフセットが書き込まれ、そしてそのオフセットは、第2パケットが書き込まれた第1ワード40を示すように修正され、(3)第1エントリ中のポインタは、第2パケットが書き込まれた第1ブロック38を指すように修正される。リードポインタは不変のまま残され、第2パケットが出力キューに追加された後も、リードポインタは、第1パケットが書き込まれた第1ブロック38を依然として指すようにする。以下で更に詳細に説明されるように、ストリームメモリ30から出力キュー内のパケットをポートモジュール28が読み込んだ場合に、リードポインタは変更される。第1パケット及び第2パケットをストリームメモリ30からポートモジュール28が読み込む前に、第3パケットが出力キューに追加された場合、(1)第3パケットが書き込まれた第1ブロック38を指すようにライトポインタが修正され、(2)第2パケットが書き込まれた第1ブロック38に対応するメモリ構造中の第2エントリにオフセットが書き込まれ、そしてそのオフセットは第3パケットが書き込まれた第1ワード40を示すように修正され、(3)第2エントリ中のポインタは、第3パケットが書き込まれた第1ブロック38を指すように修正される。再びリードポインタは不変のまま残され、第3パケットが出力キューに追加された後も、リードポインタは、第1パケットが書き込まれた第1ブロック38を依然として指すようにする。ポートモジュール28は、ストリームメモリ30から読み出す次のパケットを決定するために出力キューを使用することができる。
ポートモジュール28が1つ以上の出力キューを含む場合、出力キューの中で調停を行うアルゴリズムが使用されてもよい。複数の出力キューの中での調停(仲裁)は後続出力キューを決定することを含み、それはストリームメモリ30から読み出す次のパケットを決めるのに使用するためのものである。複数の出力キューの中での調停は、第2出力キューを用いてストリームメモリ30から読み出す次のパケットを決定する前にトリームメモリ30から読み出す第1出力キュー内のパケット数を確認することを含む。本発明は複数の出力キュー内で調停を行う適切な如何なるアルゴリズムをも想定している。非限定的な具体例として、ポートモジュール28の複数の出力キュー内の調停用アルゴリズムに従って、ポートモジュール28は連続的な巡回形式で空でない出力キューにアクセスする。ある循環サイクルで、ポートモジュール28は所定の順序で出力キューを連続的にアクセスし、ポートモジュール28は、出力キューにアクセスすると、出力キュー内の1つ以上のパケットをストリームメモリ30から読み出す。ポートモジュール28が巡回形式で出力キューから読み出すパケット数は、ポートモジュール28の1つ以上の他の出力キュー各々からポートモジュール28が同じ巡回サイクルの中で読み出すパケット数と同じでもよいし異なっていてもよい。特定の実施例では、巡回形式で出力キューから読み出し可能なパケット数は、あるデータ量を決める量子化値に基づき、そのデータ量に応じて、出力キュー内に少数のパケットしかなかったならば出力キューから、より多くのパケットが読み出し可能であり、出力キュー内に多数のパケットがあったならば出力キューから、より少ないパケットしか読み出せず、この方法はポートモジュール28の出力リンクの公平な共有を促すことができる。
図5は出力モジュール100の一例を示すブロック図である。出力モジュール100はパケットを出力する多くの一般的なスイッチで使用される。出力モジュール100は、転送リクエストデータベース110、出力キュー構造120、メモリアクセスユニット130及びストリームメモリ30を有する。転送リクエストデータベース110は、パケットを受信した入力ポートモジュール28からそのパケットに関する情報を受信する。転送リクエストデータベース110はその情報を用いて出力ポートを特定し、その出力ポートによりパケットはスイッチから伝送される。転送リクエストデータベース110は転送リクエストを収集し、それを適切な出力キュー構造120に送信し、出力キュー構造は例えば出力ポートモジュール28にあってもよい。転送リクエストはストリームメモリに格納されたパケットを指す又は適切な他の何らかの身元を指すポインタを含み、ポインタは特定の出力ポートから伝送されるものであり且つその特定の出力ポートによりアクセスも出力もされていないものである。転送リクエストデータベース110はスイッチコア26の適切な如何なる場所にあってもよい。特定の実施例では転送リクエストデータベース110はルーティングモジュール36内にあってもよい。別の実施例では転送リクエストデータベース110は特定の出力ポートモジュール28内にあってもよい。
転送リクエストデータベース110から転送リクエストを受信した後で、出力キュー構造120は転送リクエストを整列させ、並んだリクエストの中で調停を行い、メモリアクセスユニット130に送信する転送リクエストを選択する。出力キュー構造120は1つ以上の変数(例えば、QoS)に対応する適切な如何なる数のキューを含んでいてもよい。出力キュー構造120は、スイッチコア26内の適切な如何なる場所にあってもよく、例えば出力ポートモジュール28内にあってもよい。或いは、出力キュー構造120は中枢的に例えばセントラルエージェント34内にあってもよい。
メモリアクセスユニット130は、出力キュー構造120から選択された転送リクエストを受信し、選択された転送リクエストに関連するパケット(ストリームメモリ30中のパケット)にアクセスし、それらのパケットを関連する出力ポートから出力する。メモリアクセスユニット130はスイッチコア26の適切な如何なる場所にあってもよく、例えば関連する出力ポートモジュール28内にあってもよい。代替的に、メモリアクセスユニット130は中枢的に例えばセントラルエージェント34内にあってもよい。矢印140はスイッチから出力されるパケットを表現する。パケットは、関連する出力ポートから伝送される前に、ストリームメモリ30からメモリアクセスユニット130を介して伝搬する。
動作時にあっては、スイッチのポートモジュール28はパケットを受信し、そのパケットをストリームメモリ30に格納する。ポートモジュール28はパケットに関連する情報(例えば、宛先アドレス)を転送リクエストデータベース110に転送し、そのデータベースは例えばルーティングモジュール36内にあってもよい。転送リクエストデータベース110はその情報を用いて出力ポートを確認し、その出力ポートからパケットは転送される。出力キューを確認した後で、転送リクエストデータベース110は転送リクエストを収集し、確認された出力ポートに関連する出力キュー構造に転送する。出力キュー構造は例えば確認された出力ポートに関連する出力ポートモジュール28にあってもよい。出力キュー構造120は、受信した転送リクエストを適切なキューに並べ、様々なキューに並べられたリクエストの中で調停を行って転送リクエストを選択し、メモリアクセスユニット130に送信する。メモリアクセスユニット130は、選択された転送リクエストを出力キュー構造120から受信し、選択された転送リクエストに関連するパケットにメモリアクセスユニット130内でアクセスする。メモリアクセスユニット130は関連する出力ポートを介してこれらのパケットを出力する。
一般的な出力モジュール100を利用する利点は、出力キュー優先度の厳格な遵守を含む。しかしながら出力キュー優先度を厳格に遵守することによる利点が、出力キュー構造を用いることで生じるレイテンシの増加に負けてしまう状況があるかもしれない。例えば、比較的少数のパケットがポートからの伝送に関わっている場合、キュー構造を迂回することでレイテンシの短縮が達成されるかもしれない。(係属しているパケット数によらず)レイテンシの短縮が厳格に優先度を遵守するよりも重要な別の状況も存在するかもしれない。これらの何からの状況では、一例の出力モジュール100は、パケットに関する全てのリクエストをキューに並べることを要するので、パケットを処理する観点からは非効率的な方法になり、レイテンシを増やすかもしれない。
図6は本発明の一実施例による別の出力モジュールの一例を示すブロック図である。出力モジュール200は、特定の状況では出力キュー構造230のバイパスを促すことで、スイッチを介するパケットのレイテンシを減らす。特定の実施例では、厳格な優先度処理が望まれる場合には、出力キュー構造230のバイパスはディセーブルにされる。
出力モジュール200は転送リクエストデータベース210、メモリアクセスユニット220、出力キュー構造230及びストリームメモリ30を有する。図5の転送リクエストデータベース110と同様に、転送リクエストデータベース210はパケットに関連する情報(例えば、パケットの宛先アドレスのような情報)をそのパケットを受信した入力ポートモジュール28から受信する。転送リクエストデータベース210はこの情報を使って出力ポートを特定し、その出力ポートによりパケットはスイッチから伝送される。転送リクエストデータベース210は転送リクエストを生成し、適切なメモリアクセスユニット220に送信し、メモリアクセスユニットは例えば出力ポートモジュール28内にあってもよい。転送リクエストデータベース210は、スイッチコア26内の適切な如何なる場所にあってもよい。特定の実施例では転送リクエストデータベース210はルーティングモジュール36内にあるかもしれない。代替実施例では、転送リクエストデータベース210は特定の出力ポートモジュール28内にあるかもしれない。
メモリアクセスユニット220は、適切な何らかのメモリアクセスユニットで構成され、転送リクエストデータベース210から新たな転送リクエストを直接的に受信し、新たな転送リクエストが出力キュー構造230をバイパスすべきか否かを管理する。出力キュー構造230のバイパスを管理するために、メモリアクセスユニット220は、新たな転送リクエストを出力キュー構造230に選択的に転送し又はそれらを自身のリクエストバッファ(図示せず)に置く。メモリアクセスユニットは、出力キュー構造230との相互作用で時々生じる、受信した転送リクエストの消費を促す。メモリアクセスユニット220が出力キュー構造230のバイパスを管理する方法は、図7に関連して以下で更に説明される。メモリアクセスユニット220及び出力キュー構造230が相互作用し、受信した転送リクエストを消費する方法は、図8に関連して以下で更に説明される。
メモリアクセスユニット220は、リクエストバッファ(図示せず)、出力キュー構造230に関わっているリクエストについてのリクエストカウンタ222、及びメモリアクセスユニット220に関わっているリクエストについてのリクエストカウンタ224を有する。リクエストバッファは、転送リクエストデータベース210から直接的に送信された又は出力キュー構造230から抽出された転送リクエストを格納する。リクエストバッファ中のリクエストは、メモリアクセスユニット220により適切な如何なる方法で並べられてもよい。例えば、リクエストは先入れ先出し(FIFO)方式で又は他の適切な方法で並べられてもよい。出力キュー構造230を迂回する場合、メモリアクセスユニット220はリクエストバッファを用いてリクエストをかなり速やかに処理するかもしれない。しかしながらリクエストバッファは出力キュー構造230よりもかなり小さいので、出力キュー構造230は特定の状況でしか迂回されないかもしれない(即ち、係属中のリクエスト数が比較的少数の場合である。)。
リクエストカウンタ222は、出力キュー構造230に係属している転送リクエスト数の勘定を維持する適切な如何なるカウンタで構成されてよい。メモリアクセスユニット220は、メモリアクセスユニット220が新たなリクエストを出力キュー構造230に転送する場合にカウンタ222を増やし、メモリアクセスユニット220が出力キュー構造230からキューに並んだリクエストを受信する場合にカウンタ222を減らす。 留意すべきである。リクエストカウンタ222は、出力キュー構造230に係属しているリクエスト数の勘定を維持する適切な如何なるカウンタで置換されてもよいことに留意すべきである。
リクエストカウンタ224は、メモリアクセスユニット220のリクエストバッファに係属している転送リクエスト数の勘定を維持する適切な如何なるカウンタで構成されてよい。メモリアクセスユニット220が転送リクエストデータベース210から新たなリクエストを及び出力キュー構造230からキューに並んだリクエストを受信した場合に、メモリアクセスユニット220はカウンタ224を増やす。メモリアクセスユニット220が出力キュー構造230に新たなリクエストを転送する場合及びメモリアクセスユニット220がリクエストを消費する場合に、メモリアクセスユニット220はカウンタ224を減らす。このように、メモリアクセスユニット220のリクエストバッファ中の転送リクエスト数が或る閾値を下回るか否か(即ち、リクエストバッファにより格納可能な最大数に又は何らかの他の低い閾値に、転送リクエスト数が達したか否か)をカウンタ224は示す。メモリアクセスユニット220のリクエストバッファ中の転送リクエスト数が所定の閾値を下回るか否か(即ち、リクエストバッファが一杯であるか否か又は何らかの他の低い閾値に達したか否か)を示す適切な他の如何なる構成要素でカウンタ224は置換されてもよいことに留意すべきである。リクエストを「消費する(consuming)」ということは、ストリームメモリ30内の関連するパケットにアクセスし、関連する出力ポートからパケットを転送することに関連することに更に留意すべきである。
リクエストバッファに受信したパケットを格納し及び整列させた後で、メモリアクセスユニット220は、リクエストバッファで決定された特定の順序でストリームメモリ30に格納された関連するパケットにアクセスする。メモリアクセスユニット220は関連するパケットを関連する出力ポートから転送する。矢印240はスイッチから出力されるパケットを表現する。関連する出力ポートから伝送される前に、パケットはストリームメモリ30からメモリアクセスユニット220を介して進行する。
出力キュー構造230は適切な如何なる出力キュー構造で構成されてもよく、メモリアクセスユニット220から転送リクエストを受信し、適切な何らかの優先制御法を用いて受信した転送リクエストを適切なキューに並べ、適切な何らかの調停法を用いてキューに並んだリクエストの中で調停を行う。出力キュー構造230は、1つ以上の変数(例えば、QoS)に対応する適切な如何なる数のキューを含んでもよい。出力キュー構造230はスイッチコア26内の適切な如何なる場所にあってもよく、例えば出力ポートモジュール28内にあってもよい。或いは出力キュー構造230は中枢的に例えばセントラルエージェント34内にあってもよい。
動作時にあっては、スイッチのポートモジュール28はパケットを受信し、そのパケットをストリームメモリ30に格納する。ポートモジュール28はパケットに関連する情報(例えば、宛先アドレス)を転送リクエストデータベース210に転送する。転送リクエストデータベース210はこの情報を用いて出力ポートを特定し、その出力ポートからパケットが転送される。出力ポートを特定した後で、転送リクエストデータベース210は転送リクエストを収集し、確認された出力ポートに関連するメモリアクセスユニット220に送信する。図7に関連して以下で更に詳細に説明されるように、メモリアクセスユニット220は、転送リクエストデータベース210から新たな転送リクエストを受信し、カウンタ222,224を用いて出力キュー構造230のバイパスを管理する。概して、リクエストバッファ内の転送リクエスト数が或る第1閾値(即ち、リクエストバッファに格納可能な最大数又は他の何らかのより少ない数)未満であることがカウンタ224を用いて確認された場合、及び出力キュー構造230内の転送リクエスト数が或る第2閾値(即ち、構造230が空であるような場合の閾値は1)未満であることがカウンタ222を用いて確認された場合、メモリアクセスユニット220はリクエストバッファに新たな転送リクエストを設ける。リクエストバッファが一杯であった場合又は出力キュー構造230が空でなかった場合、メモリアクセスユニット220は新たな転送リクエストを出力キュー構造230に転送する。出力キュー構造230が迂回されない場合、出力キュー構造230は受信したリクエストを適切にキューに並べ、キューに並んだリクエストから選択を行う。メモリアクセスユニット220は選択された転送リクエストを出力キュー構造230から抽出し、(リクエストバッファが一杯でなかった場合)リクエストバッファ内に置く。出力キュー構造がバイパスされてもされなくても、リクエストバッファ中の転送リクエストは適切に整列させられ、リクエストバッファ中のその順序に従って処理される。
出力キュー構造のバイパスがディセーブルされる場合、メモリアクセスユニット220は、転送リクエストデータベース210から転送リクエストを受信し、これらのリクエストを出力キュー構造230に転送し、出力キュー構造230で決定された順序でリクエストを受信し、出力キュー構造230から受信したリクエストをリクエストバッファ内に置き、出力キュー構造230で決定された順序で、関連するパケットの送信を支援する。例えば、係属中の転送リクエスト数が閾値を越えた場合(即ち、レイテンシがかなり少ないとはもはや言えなくなった場合)又は厳密な優先度規則が強制される等の場合に、出力キュー構造のバイパスはディセーブルされるかもしれない。バイパスのイネーブル及びディセーブルは、適切な如何なる方法で生じてもよく、例えば動的に引き起こすことも含まれる。例えばセントラルエージェント34のような適切な如何なる構成要素がバイパスをイネーブルに又はディセーブルにしてもよい。バイパスのディセーブル又はイネーブルが、出力キュー構造230、転送リクエストデータベース210又はメモリアクセスユニット220で係属中のリクエスト数に基づく場合、これらの構成要素の1つ以上から、バイパスをディセーブルに又はイネーブルにする構成要素に適切な情報が通知され、バイパスを適切にイネーブルに又はディセーブルにする。
図7は出力キュー構造のバイパスを管理する本発明の特定の実施例による方法例を示すフローチャートである。特定の実施例では方法300は例えば上述のメモリアクセスユニット220のようなスイッチ内のメモリアクセスユニット220で実行されてもよい。或いは方法300は適切な如何なる構成要素によって又は構成要素の組み合わせによって実行されてもよい。概して、リクエストバッファ内の転送リクエスト数(上述)が或る第1閾値未満であった場合(即ち、リクエストバッファに格納可能な最大数のような適切な何らかの数未満であり、リクエストバッファは一杯でなかった場合)、及び出力キュー構造中の転送リクエスト数が所定の第2閾値未満であった場合(即ち、閾値1未満であり、出力キュー構造は空であった場合)、メモリアクセスユニットはリクエストバッファに新たな転送リクエストを用意し、出力キュー構造をバイパスする。リクエストバッファが第1閾値であった又はそれより大きかった場合(即ち、バッファが一杯であった場合)、又は出力キュー構造230が第2閾値であった又はそれより大きかった場合(即ち、構造が空でなかった場合)、メモリアクセスユニットは新たな転送リクエストを出力キュー構造に転送する。代替実施例では出力キュー構造のバイパスが適切な他の何らかの方法で管理されてもよい。
方法300はステップ310から始まり、新たな転送リクエストが受信される。新たな転送リクエストは、例えば、転送リクエストデータベース(即ち、データベース210)からメモリアクセスユニット(即ち、ユニット220)で受信されてもよい。メモリアクセスユニットはフローチャートでは「MAU」と表現され、転送リクエストデータベースはフローチャートでは「FWD」と表現される。
ステップ320では、メモリアクセスユニットのリクエストバッファが一杯であるか否かの判定がなされる。リクエストバッファは、例えば、図6に関して説明されたようなリクエストバッファでもよい。リクエストバッファが一杯であるか否かの上記の判定は、特定の実施例ではカウンタ(即ち、カウンタ224)を用いて実行されてもよい。代替実施例ではその判定は適切な如何なる方法でなされてもよい。
メモリアクセスユニットのリクエストバッファが一杯であったならば、本方法はステップ330に進む。ステップ330では、新たな転送リクエストが出力キュー構造(即ち、構造230)に送信される。そして出力キュー構造は新たな転送リクエストを抽出する。例えば、メモリアクセスユニットが、リクエストバッファ内の転送リクエストを消費し、新たな転送リクエストより先にキューに並んだ出力キュー構造内の他の何らかの転送リクエストを抽出した後に、メモリアクセスユニットは出力キュー構造から新たな転送リクエストを抽出する。メモリアクセスユニット及び出力キュー構造が、受信した転送リクエストを消費するように関わる方法は、図8に関連して以下で更に説明される。
ステップ320でメモリアクセスユニットのリクエストバッファが一杯でないことが確認されると、ステップ340で出力キュー構造が空であるか否かが確認される。出力キュー構造が空であるか否かについての判定は、特定の実施例ではカウンタ(即ち、メモリアクセスユニット220のカウンタ222)を用いてなされてもよい。代替実施例ではその判定は適切な如何なる方法でなされてもよい。
出力キュー構造が空であった場合、本方法はステップ350に進む。ステップ350では新たな転送リクエストがメモリアクセスユニットのリクエストバッファに置かれる。転送リクエストはリクエストバッファの適切な何らかの方法で並べられる(FIFO方式であるとは限らない)。図8に関して更に後述されるように、メモリアクセスユニットは、リクエストバッファで決定された順序でリクエストバッファ内の転送リクエストを消費する。ステップ340で出力キュー構造が空でないことが確認されると、本方法は上述したようにステップ330に進む。本方法では転送リクエストが出力キュー構造内に残っていた場合、新たなリクエストは出力キュー構造をバイパスしない。メモリアクセスユニット内のリクエストバッファが一杯であった場合も、新たなリクエストは出力キュー構造をバイパスしない。
図8は転送リクエストの消費を管理する本発明の特定の実施例による方法例を示すフローチャートである。特定の実施例では、メモリアクセスユニット(即ち、ユニット220)及び/又は出力キュー構造(即ち、ユニット230)内の転送リクエストの消費が管理される。方法400は、(リクエストバッファが一杯でなかった場合に)出力キュー構造から選択された何らかの転送リクエストを抽出してリクエストバッファに置くことをメモリアクセスユニットに許容し、リクエストバッファ内でそれらの順序に従ってリクエストバッファ内の転送リクエストを消費することをメモリアクセスユニットに許可する。方法400は方法300が実行される前に、途中で又は後で適切に使用されてよい。
方法400はステップ410から始まり、メモリアクセスユニットのリクエストバッファが空であるか否かの判定がなされる。リクエストバッファが空であるか否かについての判定は、例えばカウンタ(即ち、カウンタ224)を用いてなされてもよい。代替実施例ではその判定は適切な他の如何なる方法でなされてもよい。
リクエストバッファが空であった場合、リクエストバッファ内の次の転送リクエストがステップ420で消費される。方法400はステップ430に進む。上述したように、概して転送リクエストを消費するということは、ストリームメモリ30内で関連するパケットにアクセスし、そのパケットを関連する出力ポートに転送することに関する。
ステップ410でリクエストバッファが空であったことが確認されると(又はステップ420の後で)、本方法400はステップ430に進む。ステップ430では出力キュー構造が空であるか否かの判定がなされる。出力キュー構造が空であったか否かについての判定は、例えばカウンタ(即ち、カウンタ222)を用いてなされてもよい。代替実施例ではその判定は適切な他の如何なる方法でなされてもよい。
出力キュー構造が空であったことがステップ430で確認された場合、本方法400はステップ410に戻る。出力キュー構造が空でなかったことがステップ430で確認された場合、本方法400はステップ440に進む。ステップ440では、出力キュー構造内の次の転送リクエストがメモリアクセスユニットにより抽出される。出力キュー構造内の次のリクエストは、例えば、(適切に処理された後の)キュー構造から選択された転送リクエストでもよい。
ステップ440の後、本方法400はステップ450に進み、抽出されたリクエストがメモリアクセスユニットのリクエストバッファ内に置かれる。抽出されたリクエストは、適切な何らかの方法でリクエストバッファ内で並べられ、リクエストバッファで決定された順序に従って消費される。この方法で方法400は、(リクエストバッファが一杯でなかった場合に)選択された何らかの転送リクエストを出力キュー構造から抽出してリクエストバッファに置くことをメモリアクセスユニットに許可し、リクエストバッファでそれらの順序に従ってリクエストバッファ内の転送リクエストを消費することをメモリアクセスユニットに許可する。
本開示範囲から逸脱せずに、修正、追加又は省略が説明済みのシステム及び方法になされてもよい。説明されたシステム及び方法の構成要素は、具体的なニーズに応じて統合されてもよいし分散されてもよい。更に、説明されたシステム及び方法の処理は、本開示範囲から逸脱せずに、より多数の、より少数の又は他の構成要素により実行されてもよい。
図9は本発明の別の実施例による別の出力モジュール500の一例を示すブロック図である。出力モジュール200と同様に、出力モジュール500は、特定の状況で出力キュー構造530のバイパスを支援することで、スイッチを介するパケットの待ち時間を削減する。厳格な優先制御が望まれる場合、特定の実施例では出力キュー構造530のバイパスはディセーブルにされる。
出力モジュール500は転送リクエストデータベース510、メモリアクセスユニット520、出力キュー構造530及びストリームメモリ30を有する。転送リクエストデータベース510は、スイッチコア26の中核的な場所にあってもよいし(即ち、ルーティングモジュール36)、或いは特定の出力ポートモジュール28にあってもよい。図6の転送リクエストデータベース210と同様に、転送リクエストデータベース510はパケットに関する情報(例えば、パケットの宛先アドレスのような情報)を、パケットを受信した入力ポートモジュール28から受信する。転送リクエストデータベース510は、その情報を用いて出力ポートを特定し、その出力ポートによりパケットはスイッチから伝送される。この情報を利用して、転送リクエストデータベース510は新たな転送リクエストを生成する。
転送リクエストデータベース210とは異なり、転送リクエストデータベース510は、メモリアクセスユニット520に直接的に又は出力キュー構造530に直接的に、新たな転送リクエストを選択的に送信し、これにより出力キュー構造530のバイパスを管理する。転送リクエストデータベース510は、以下で図10に関して説明される方法で出力キュー構造530のバイパスを管理する。特定の実施例では、メモリアクセスユニット520内のリクエストバッファ内の転送リクエスト数が或る第1閾値(即ち、リクエストバッファに格納可能な最大数のような適切な何らかの数)未満であることがカウンタ522(後述)にアクセスすることで確認された場合、及び出力キュー構造530内の転送リクエスト数が或る第2閾値(即ち、構造530が空であるような場合の閾値は1)未満であることがカウンタ512(後述)を用いて確認された場合、転送リクエストデータベース510は、メモリアクセスユニット520に直接的に新たな転送リクエストを送信する(リクエストバッファ内に置かれる。)。リクエストバッファが所定の第1閾値以上であった場合(即ち、バッファが一杯であった場合)又は出力キュー構造530が所定の第2閾値以上であった場合(即ち、構造530が空でなかった場合)、転送リクエストデータベース510は新たな転送リクエストを出力キュー構造530に送信する。代替実施例では、出力キュー構造のバイパスは、適切な他の何らかの方法で管理されてもよい。図8に関して上述されたように、転送リクエストの消費は方法400に従って管理されてもよい。
転送リクエストデータベース210とは異なり、リクエストカウンタ512は、出力キュー構造530に係属中の転送リクエスト数の勘定を維持する適切な如何なるカウンタで構成されてもよい。転送リクエストデータベース510が新たな転送リクエストを出力キュー構造530に送信する場合、転送リクエストデータベース510はカウンタ512を増やす(インクリメントする)。メモリアクセスユニットが出力キュー構造530から転送リクエストを抽出したことの通知を転送リクエストデータベース510がメモリアクセスユニット220から受けた場合(又は、転送リクエストデータベース510が出力キュー構造530からその情報に直接的にアクセスする場合)、転送リクエストデータベース510はカウンタ512を減らす(デクリメントする)。リクエストカウンタ512は、出力キュー構造530に係属中のリクエスト数の勘定を維持する適切な如何なる構成要素で置換されてもよいことに留意すべきである。特定の実施例では、転送リクエストデータベース510はメモリアクセスユニット520のカウンタ522(後述)にアクセスし、メモリアクセスユニット520内のリクエストバッファが一杯であるか否かを確認することに留意すべきである。或いは、転送リクエストデータベース510は、適切な何らかの方法で適切な何らかの他の構成要素を用いてリクエストバッファが一杯であるか否かを確認してもよい。
メモリアクセスユニット520は適切な如何なるメモリアクセスユニットで構成されてもよく、転送リクエストデータベース510から直接的に転送リクエストを受信し、出力キュー構造530から直接的に転送リクエストを抽出し、図8に関連して上述した方法400に従って受信及び抽出された転送リクエストの消費を管理する。しかしながら、図8のステップ430では、転送リクエストデータベース510内のカウンタ512にアクセスすることで出力キュー構造530が空であるか否かの判定をメモリアクセスユニット520が行ってよいことに留意すべきである。メモリアクセスユニット520はこの判定を適切な他の如何なる方法で行ってもよい。
メモリアクセスユニット520は、(不図示の)リクエストバッファ及びリクエストカウンタで構成され、リクエストカウンタはリクエストバッファに係属中のリクエストを数える。リクエストバッファは、転送リクエストデータベース510から直接的に送信された転送リクエスト又は出力キュー構造530から抽出された転送リクエストを格納する。リクエストバッファ中のリクエストは、メモリアクセスユニット520により適切な何らかの順序に並べられる。例えばリクエストは先入れ先出し(FIFO)方式で又は他の適切な方式で並べられてもよい。出力キュー構造530がバイパスされる場合、転送リクエストは、リクエストバッファのみを用いてより一層かなり速やかに処理される。しかしながら、リクエストバッファは出力キュー構造530よりもかなり小さいかもしれないので、出力キュー構造530は特定の状況でのみバイパスされる(即ち、係属中のリクエスト数がリクエストバッファのサイズ以下であった場合である。)。
リクエストカウンタ522は適切な如何なるカウンタで構成されてもよく、メモリアクセスユニット520内のリクエストバッファに係属中の転送リクエスト数の勘定を維持する。メモリアクセスユニット520が転送リクエストデータベース510から新たなリクエストを受信し、出力キュー構造530からリクエストを抽出すると、メモリアクセスユニット520はカウンタ522をインクリメントする。メモリアクセスユニット520は、メモリアクセスユニット520がリクエストを消費した場合にカウンタ522をデクリメントする。このようにカウンタ522は、メモリアクセスユニット520のリクエストバッファが一杯であるか否かを示す。この情報は、メモリアクセスユニット520により及び転送リクエストデータベース510によりアクセスされ使用される。メモリアクセスユニット520内のリクエストバッファが一杯であるか否かを示す適切な他の如何なる構成要素でカウンタ522が置換されてもよいことに留意すべきである。
受信したリクエストをリクエストバッファに格納して順序付けた後に、メモリアクセスユニット520は、リクエストバッファにより決定された特定の順序でストリームメモリ30に格納された関連するパケットにアクセスする。メモリアクセスユニット520は関連するパケットを関連する出力ポートから転送する。矢印540はスイッチから出力されるパケットを表現する。関連する出力ポートから伝送される前に、パケットはストリームメモリ30からメモリアクセスユニット520を介して進行する。
出力キュー構造530は適切な如何なる出力キュー構造で構成されてよく、転送リクエストデータベース510から新たな転送リクエストを受信し、適切な何らかの優先制御法を用いて、受信した転送リクエスト適切なキューに並べ、適切な何らかの調停法を用いて、キューに並べられたリクエストの間で調停を行う。出力キュー構造530は、1つ以上の変数(例えば、QoS)に関連する適切な如何なる数のキューを含んでもよい。出力キュー構造530で送信に備えて選択された転送リクエストは、メモリアクセスユニット520により適切な何らかの方法で抽出される。出力キュー構造530はスイッチコア26内の適切な如何なる場所にあってもよく、例えば出力ポートモジュール28内にあってもよい。或いは、出力キュー構造530は例えばセントラルエージェント34内のように中枢的な場所にあってもよい。
動作時にあっては、スイッチのポートモジュール28はパケットを受信し、そのパケットをストリームメモリ30に格納する。ポートモジュール28はパケットに関連する情報(例えば、宛先アドレスのような情報)を転送リクエストデータベース510に転送する。転送リクエストデータベース510はこの情報を用いて出力ポートを特定し、その出力ポートからパケットが転送される。出力ポートを特定した後で、転送リクエストデータベース510は転送リクエストを収集し、出力ポートに送信する。転送リクエストデータベース510は、確認された出力ポートに関連する出力キュー構造530に直接的に又はメモリアクセスユニット520に直接的に転送リクエストを選択的に送信し、それにより出力キュー構造530のバイパスを管理する。特定の実施例では、メモリアクセスユニット520520のリクエストバッファ内の転送リクエスト数が或る第1閾値未満であったことがカウンタ522にアクセスすることで確認された場合(即ち、リクエストバッファが一杯でなかった場合)、及び出力キュー構造530内の転送リクエスト数が或る第2閾値未満であったことがカウンタ512を用いて確認された場合(即ち、出力キュー構造530が空であった場合)、転送リクエストデータベース510は、メモリアクセスユニット520に新たな転送リクエストを送信する(リクエストバッファに用意される)。リクエストバッファ内の転送リクエスト数が或る第1閾値以上であった場合(即ち、リクエストバッファが一杯であったような場合)又は出力キュー構造530が或る第2閾値以上であった場合(即ち、出力キュー構造が空でなかったような場合)、転送リクエストデータベース510は新たな転送リクエストを出力キュー構造530に送信する。出力キュー構造530は受信した転送リクエストを適切な何らかの方法で処理する。メモリアクセスユニット520は、転送リクエストデータベース510から直接的に転送リクエストを受信し、出力キュー構造530から直接的に転送リクエストを抽出し、受信及び抽出した転送リクエストを適切な何らかの順序でリクエストバッファ内に置き、受信及び抽出した転送リクエストの消費を、図8に関連して上述した方法400に従って管理する。しかしながら図8のステップ430では、転送リクエストデータベース510内のカウンタ512にアクセスすることで出力キュー構造530が空であるか否かの確認をメモリアクセスユニット520が行ってよいことに留意すべきである。
出力キュー構造のバイパスがディセーブルされる場合、転送リクエストデータベース510は、全ての転送リクエストを出力キュー530に直接的に送信する。メモリアクセスユニット520は、出力キュー530で決定された順序で出力キュー530から転送リクエストを抽出し、抽出したリクエストをリクエストバッファ内に置き、出力キュー530により決定した順序で関連するパケットの送信を支援する。例えば、係属中の転送リクエスト数が閾値を越えて増加する場合(即ち、レイテンシがかなり少ないとはもはや言えなくなった場合)又は厳密な優先度規則が強制される等の場合に、出力キュー構造のバイパスはディセーブルされるかもしれない。バイパスのイネーブル及びディセーブルは、適切な如何なる方法で生じてもよく、例えば動的に引き起こすことも含まれる。例えばセントラルエージェント34のような適切な如何なる構成要素がバイパスをイネーブルに又はディセーブルにしてもよい。バイパスのディセーブル又はイネーブルが、出力キュー構造530、転送リクエストデータベース510又はメモリアクセスユニット520で係属中のリクエスト数に基づく場合、これらの構成要素の1つ以上から、バイパスをディセーブルに又はイネーブルにする構成要素に適切な情報が通知され、バイパスを適切にイネーブルに又はディセーブルにする。
図10は出力キュー構造のバイパスを管理する本発明の特定の実施例による別の方法例600を示すフローチャートである。特定の実施例では、方法600は例えば上述の転送リクエストデータベース510のようなスイッチ内の転送リクエストデータベースにより実行されてよい。或いは方法600は適切な如何なる構成要素により又は構成要素の組み合わせにより実行されてもよい。概してメモリアクセスユニット内の(上述の)リクエストバッファが一杯でなく且つ出力キュー構造が空であったならば、転送リクエストデータベースは、新たな転送リクエストをメモリアクセスユニット内のリクエストバッファに送信し、出力キュー構造をバイパスする。リクエストバッファが一杯であった場合又は出力キュー構造が空でなかった場合、転送リクエストデータベースは新たな転送リクエストを出力キュー構造に送信する。代替実施例では出力キュー構造のバイパスは適切な他の何らかの方法で管理されもよい。
方法600はステップ610,620から始まり、メモリアクセスユニット内のリクエストバッファが一杯であるか否かを確認することで、新たな転送リクエストを送信することについての判定がなされる。新たな転送リクエストを送信することについての判定は、転送リクエストデータベース(即ち、データベース510)によりなされてもよい。リクエストバッファは、例えば、図9に関して上述したリクエストバッファでもよい。特定の実施例では、メモリアクセスユニット内のリクエストバッファが一杯であるか否かについての判定は、適切なカウンタ(即ち、メモリアクセスユニット520内のカウンタ522)にアクセスすることでなされてもよい。代替実施例では、その判定は適切な他の何らかの方法でなされてもよい。
メモリアクセスユニット内のリクエストバッファが一杯であった場合、本方法はステップ630に進む。ステップ630では新たな転送リクエストが出力キュー構造(即ち、構造530)に送信される。出力キュー構造は新たな転送リクエストを適切に処理してもよい。例えばメモリアクセスユニットが、リクエストバッファ内の転送バッファを消費し、新たな転送リクエストより先にキューに並べられた出力キュー構造中の他の何らかの転送リクエストを処理した後で、メモリアクセスユニットは新たな転送リクエストを出力キュー構造から抽出してよい。メモリアクセスユニット及び出力キュー構造が、受信した転送リクエストを消費するために行う方法は、図8に関して説明済みである。しかしながら図8のステップ430では、転送リクエストデータベースのカウンタ(即ち、カウンタ512)にアクセスすることで、出力キュー構造が空であるか否かの判定をメモリアクセスユニットが行ってよいことに留意すべきである。
ステップ620でメモリアクセスユニットのリクエストバッファが一杯でないことが確認された場合、出力キュー構造が空であるか否かの判定がステップ640でなされる。出力キュー構造が空であるか否かについての判定は、特定の実施例ではカウンタ(即ち、転送リクエストデータベース510内のカウンタ)を用いてなされてもよい。代替実施例では、その判定は適切な如何なる方法でなされてもよい。
出力キュー構造が空であった場合、本方法はステップ650に進む。ステップ650では新たな転送リクエストがメモリアクセスユニットに送信され、メモリアクセスユニットのリクエストバッファ内に置かれる。転送リクエストはリクエストバッファで適切な何らかの方法で並べられる(必ずしもFIFO方式ではない。)。図8に関して上述したように、メモリアクセスユニットは、リクエストバッファで決定された順序でリクエストバッファ内の転送リクエストを消費する。ステップ640で出力キュー構造が空でなかったことが確認された場合、本方法は上述のステップ630に進む。この方法では、転送リクエストが出力キュー構造内に残っている場合には、新たなリクエストは出力キュー構造をバイパスしない。メモリアクセスユニット内のリクエストバッファが一杯であった場合も、新たなリクエストは出力キュー構造をバイパスしない。特定の実施例では、方法600は方法400の前に、途中に又は後に適切に使用されてよい。
本開示範囲から逸脱せずに、修正、追加又は省略が説明済みのシステム及び方法になされてもよい。説明されたシステム及び方法の構成要素は、具体的なニーズに応じて統合されてもよいし分散されてもよい。更に説明されたシステム及び方法の処理は、本開示範囲から逸脱せずに、より多数の、より少数の又は他の構成要素により実行されてもよい。更にシステム200は他の種類のイリーガルパケットを確認及び処理するのに使用されてもよい。
以上本開示内容はいくつかの実施例と共に説明されてきたが、変更、置換、変形、代替及び修正の様々なものが当業者に示唆されるであろうし、本開示ではそのような変更、置換、変形、代替及び修正の全てを添付の特許請求の範囲内に包含することが意図される。
以下、本発明により教示される手段が例示的に列挙される。
(付記1)
スイッチの出力キュー構造をバイパスする方法であって、
スイッチの入力ポートでパケットを受信するステップと、
前記スイッチのメモリに前記パケットを格納するステップと、
格納されたパケットに及び前記スイッチの特定の出力ポートに関連し、前記格納されたパケットの前記メモリ内の場所を特定する転送リクエストを生成するステップと、
前記特定の出力ポートに関連する出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定するステップと、
前記転送リクエストを用いて、該転送リクエストに関連する前記パケットを前記メモリから抽出するステップと、
抽出したパケットを前記特定の出力ポートから送信するステップと、
を有する方法。
(付記2)
前記出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定するステップが、前記特定の出力ポートに関連するメモリアクセスユニットのリクエストバッファで未処理の転送リクエスト数を判定するステップを有し、
当該方法は、前記リクエストバッファで未処理の転送リクエスト数が第1閾値未満であった場合に、前記転送リクエストが前記出力キュー構造をバイパスすることを引き起こすステップを更に有する付記1記載の方法。
(付記3)
前記第1閾値が、前記リクエストバッファに格納可能な転送リクエストの最大数以下である付記2記載の方法。
(付記4)
前記出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定するステップが、前記出力キュー構造で未処理の転送リクエスト数を判定するステップを有し、
当該方法は、前記出力キュー構造で未処理の転送リクエスト数が第2閾値未満であった場合に、前記転送リクエストが前記出力キュー構造をバイパスすることを引き起こすステップを更に有する付記2記載の方法。
(付記5)
前記第2閾値が1である付記4記載の方法。
(付記6)
前記転送リクエストにより前記出力キュー構造をバイパスしないように判定がなされ、当該方法は、
前記出力キュー構造に前記転送リクエストを送信するステップと、
前記出力キュー構造内の前記転送リクエストを処理するステップと、
前記出力キュー構造で前記転送リクエストを選択するステップと、
を更に有する付記1記載の方法。
(付記7)
前記転送リクエストに関連するパケットを前記メモリから抽出する前に、前記特定の出力ポートに関連するメモリアクセスユニットのリクエストバッファに前記転送リクエストを置くステップを更に有し、前記リクエストバッファは複数の転送リクエストを有し、当該方法は、
前記リクエストバッファで前記複数の転送リクエストを整列させるステップと、
前記転送リクエストを前記リクエストバッファで選択するステップと、
を有する付記1記載の方法。
(付記8)
前記転送リクエストに関連するパケットを前記メモリから抽出する前に、前記特定の出力ポートに関連するメモリアクセスユニットのリクエストバッファに前記転送リクエストを置くステップを更に有し、前記リクエストバッファは複数の転送リクエストを有し、当該方法は、
前記複数の転送リクエストを前記リクエストバッファで先入れ先出し方式で処理するステップと、
前記転送リクエストを前記リクエストバッファで選択するステップと、
を有する付記1記載の方法。
(付記9)
コンピュータ読取可能な媒体にエンコードされた論理装置であって、
スイッチの入力ポートでパケットを受信するステップと、
前記スイッチのメモリに前記パケットを格納するステップと、
格納されたパケットに及び前記スイッチの特定の出力ポートに関連し、前記格納されたパケットの前記メモリ内の場所を特定する転送リクエストを生成するステップと、
前記特定の出力ポートに関連する出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定するステップと、
前記転送リクエストを用いて、該転送リクエストに関連する前記パケットを前記メモリから抽出するステップと、
抽出したパケットを前記特定の出力ポートから送信するステップと、
をコンピュータに実行させる論理装置。
(付記10)
前記出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定するステップが、前記特定の出力ポートに関連するメモリアクセスユニットのリクエストバッファで未処理の転送リクエスト数を判定するステップを有し、
当該論理装置は、前記リクエストバッファで未処理の転送リクエスト数が第1閾値未満であった場合に、前記転送リクエストが前記出力キュー構造をバイパスすることを引き起こすステップを更にコンピュータに実行させる付記9記載の論理装置。
(付記11)
前記第1閾値が、前記リクエストバッファに格納可能な転送リクエストの最大数以下である付記10記載の論理装置。
(付記12)
前記出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定するステップが、前記出力キュー構造で未処理の転送リクエスト数を判定するステップを有し、
当該論理装置は、前記出力キュー構造で未処理の転送リクエスト数が第2閾値未満であった場合に、前記転送リクエストが前記出力キュー構造をバイパスすることを引き起こすステップを更にコンピュータに実行させる付記10記載の論理装置。
(付記13)
前記第2閾値が1である付記12記載の論理装置。
(付記14)
前記転送リクエストにより前記出力キュー構造をバイパスしないように判定がなされ、当該論理装置は、
前記出力キュー構造に前記転送リクエストを送信するステップと、
前記出力キュー構造内の前記転送リクエストを処理するステップと、
前記出力キュー構造で前記転送リクエストを選択するステップと、
をコンピュータに更に実行させる付記9記載の論理装置。
(付記15)
前記転送リクエストに関連するパケットを前記メモリから抽出する前に、前記特定の出力ポートに関連するメモリアクセスユニットのリクエストバッファに前記転送リクエストを置くステップを更に有し、前記リクエストバッファは複数の転送リクエストを有し、当該論理装置は、
前記リクエストバッファで前記複数の転送リクエストを整列させるステップと、
前記転送リクエストを前記リクエストバッファで選択するステップと、
をコンピュータに更に実行させる付記9記載の論理装置。
(付記16)
前記転送リクエストに関連するパケットを前記メモリから抽出する前に、前記特定の出力ポートに関連するメモリアクセスユニットのリクエストバッファに前記転送リクエストを置くステップを更に有し、前記リクエストバッファは複数の転送リクエストを有し、当該論理装置は、
前記複数の転送リクエストを前記リクエストバッファで先入れ先出し方式で処理するステップと、
前記転送リクエストを前記リクエストバッファで選択するステップと、
をコンピュータに更に実行させる付記9記載の論理装置。
(付記17)
スイッチの出力キュー構造をバイパスするシステムであって、
パケットを受信するためのスイッチの入力ポートと、
受信したパケットを格納する前記スイッチのメモリと、
転送リクエストデータベースを有するルーティングモジュールであって、格納されたパケットに及び前記スイッチの特定の出力ポートに関連し、前記格納されたパケットの前記メモリ内の場所を特定する転送リクエストを生成し、前記転送リクエストをメモリアクセスユニットに送信するルーティングモジュールと、
前記特定の出力ポートに関連するメモリアクセスユニットであって、前記ルーティングモジュールから前記転送リクエストを受信し、前記特定の出力ポートに関連する出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定し、
前記転送リクエストを用いて、該転送リクエストに関連する前記パケットを前記メモリから抽出し、抽出したパケットを前記特定の出力ポートから送信するメモリアクセスユニットと、
を有するシステム。
(付記18)
前記メモリアクセスユニットがリクエストバッファを有し、
前記出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定することが、前記特定の出力ポートに関連するメモリアクセスユニットのリクエストバッファで未処理の転送リクエスト数を判定することを含み、
前記メモリアクセスユニットは、前記リクエストバッファで未処理の転送リクエスト数が第1閾値未満であった場合に、前記転送リクエストが前記出力キュー構造をバイパスすることを引き起こす付記17記載のシステム。
(付記19)
前記第1閾値が、前記リクエストバッファに格納可能な転送リクエストの最大数以下である付記18記載のシステム。
(付記20)
前記出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定することが、前記出力キュー構造で未処理の転送リクエスト数を判定することを含み、
前記メモリアクセスユニットは、前記出力キュー構造で未処理の転送リクエスト数が第2閾値未満であった場合に、前記転送リクエストが前記出力キュー構造をバイパスすることを引き起こす付記18記載のシステム。
(付記21)
前記第2閾値が1である付記20記載のシステム。
(付記22)
前記転送リクエストにより前記出力キュー構造をバイパスしないように判定がなされ、
前記メモリアクセスユニットは、前記出力キュー構造に前記転送リクエストを送信し、
当該システムは、前記特手の出力ポートに関連する出力キュー構造を更に有し、前記転送リクエストを処理し、前記転送リクエストを選択する付記17記載のシステム。
(付記23)
前記メモリアクセスユニットがリクエストバッファを有し、前記メモリアクセスユニットは、
前記転送リクエストに関連するパケットを前記メモリから抽出する前に、前記特定の出力ポートに関連するメモリアクセスユニットのリクエストバッファに前記転送リクエストを置き、前記リクエストバッファは複数の転送リクエストを有し、前記複数の転送リクエストを整列させ、前記転送リクエストを選択する付記17記載のシステム。
(付記24)
前記メモリアクセスユニットがリクエストバッファを有し、前記メモリアクセスユニットは、
前記転送リクエストに関連するパケットを前記メモリから抽出する前に、前記特定の出力ポートに関連するメモリアクセスユニットのリクエストバッファに前記転送リクエストを置器、前記リクエストバッファは複数の転送リクエストを有し、前記複数の転送リクエストを先入れ先出し方式で処理し、前記転送リクエストを選択する付記17記載のシステム。
(付記25)
スイッチの出力キュー構造をバイパスするシステムであって、
パケットを受信するためのスイッチの入力ポートと、
受信したパケットを格納する前記スイッチのメモリと、
転送リクエストデータベースを有するルーティングモジュールであって、格納されたパケットに及び前記スイッチの特定の出力ポートに関連し、前記格納されたパケットの前記メモリ内の場所を特定する転送リクエストを生成し、前記特定の出力ポートに関連する出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定するルーティングモジュールと、
前記特定の出力ポートに関連するメモリアクセスユニットであって、前記転送リクエストを受信し、前記転送リクエストを用いて、該転送リクエストに関連する前記パケットを前記メモリから抽出し、受信したパケットを前記特定の出力ポートから送信するメモリアクセスユニットと、
を有するシステム。
(付記26)
前記メモリアクセスユニットがリクエストバッファを有し、
前記出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定することが、前記特定の出力ポートに関連するメモリアクセスユニットのリクエストバッファで未処理の転送リクエスト数を判定することを含み、
前記ルーティングモジュールは、前記リクエストバッファで未処理の転送リクエスト数が第1閾値未満であった場合に、前記転送リクエストが前記出力キュー構造をバイパスすることを引き起こす付記25記載のシステム。
(付記27)
前記第1閾値が、前記リクエストバッファに格納可能な転送リクエストの最大数以下である付記25記載のシステム。
(付記28)
前記出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定することが、前記出力キュー構造で未処理の転送リクエスト数を判定することを含み、
前記ルーティングモジュールは、前記出力キュー構造で未処理の転送リクエスト数が第2閾値未満であった場合に、前記転送リクエストが前記出力キュー構造をバイパスすることを引き起こす付記26記載のシステム。
(付記29)
前記第2閾値が1である付記28記載のシステム。
(付記30)
前記転送リクエストにより前記出力キュー構造をバイパスしないように判定がなされ、
前記ルーティングモジュールは、前記出力キュー構造に前記転送リクエストを送信し、
当該システムは、前記特手の出力ポートに関連する出力キュー構造を更に有し、前記転送リクエストを処理し、前記転送リクエストを選択する付記25記載のシステム。
(付記31)
前記メモリアクセスユニットがリクエストバッファを有し、前記メモリアクセスユニットは、
前記転送リクエストに関連するパケットを前記メモリから抽出する前に、前記特定の出力ポートに関連するメモリアクセスユニットのリクエストバッファに前記転送リクエストを置き、前記リクエストバッファは複数の転送リクエストを有し、前記複数の転送リクエストを整列させ、前記転送リクエストを選択する付記25記載のシステム。
(付記32)
前記メモリアクセスユニットがリクエストバッファを有し、前記メモリアクセスユニットは、
前記転送リクエストに関連するパケットを前記メモリから抽出する前に、前記特定の出力ポートに関連するメモリアクセスユニットのリクエストバッファに前記転送リクエストを置器、前記リクエストバッファは複数の転送リクエストを有し、前記複数の転送リクエストを先入れ先出し方式で処理し、前記転送リクエストを選択する付記25記載のシステム。
システムエリアネットワーク例を示す図である。 システムエリアネットワークのスイッチの一例を示す図である。 スイッチのスイッチコアの一例を示す図である。 スイッチコアの論理的にブロックに分割されたストリームメモリの一例を示す図である。 出力モジュールの一例を示すブロック図である。 本発明の一実施例による別の出力モジュールの一例を示すブロック図である。 出力キュー構造のバイパスを管理する本発明の特定の実施例による方法例を示すフローチャートである。 転送リクエストの消費を管理する本発明の特定の実施例による方法例を示すフローチャートである。 本発明の別の実施例による別の出力モジュールの一例を示すブロック図である。 出力キュー構造のバイパスを管理する本発明の特定の実施例による別の方法例を示すフローチャートである。
符号の説明
10 システムエリアネットワーク
12 相互接続部
14 サーバーシステム
16 ストレージシステム
18 ネットワークシステム
20 ルーティングシステム
22 スイッチ
24 ポート
26 スイッチコア
28 ポートモジュール
30 ストリームメモリ
32 タグメモリ
33 入力コントロールアンドセントラルエージェント(ICCA)
36 ルーティングモジュール
37 スイッチングモジュール
100 出力モジュール
110 転送リクエストデータベース
120 出力キュー構造
130 メモリアクセスユニット
200 出力モジュール
210 転送リクエストデータベース
220 メモリアクセスユニット
230 出力キュー構造
222,224 リクエストカウンタ
500 出力モジュール
510 転送リクエストデータベース
520 メモリアクセスユニット
512,522 カウンタ
530 出力キュー構造

Claims (10)

  1. スイッチの出力キュー構造をバイパスする方法であって、
    スイッチの入力ポートでパケットを受信するステップと、
    前記スイッチのメモリに前記パケットを格納するステップと、
    格納されたパケットに及び前記スイッチの特定の出力ポートに関連し、前記格納されたパケットの前記メモリ内の場所を特定する転送リクエストを生成するステップと、
    前記特定の出力ポートに関連する出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定するステップと、
    前記転送リクエストを用いて、該転送リクエストに関連する前記パケットを前記メモリから抽出するステップと、
    抽出したパケットを前記特定の出力ポートから送信するステップと、
    を有する方法。
  2. コンピュータ読取可能な媒体にエンコードされた論理装置であって、
    スイッチの入力ポートでパケットを受信するステップと、
    前記スイッチのメモリに前記パケットを格納するステップと、
    格納されたパケットに及び前記スイッチの特定の出力ポートに関連し、前記格納されたパケットの前記メモリ内の場所を特定する転送リクエストを生成するステップと、
    前記特定の出力ポートに関連する出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定するステップと、
    前記転送リクエストを用いて、該転送リクエストに関連する前記パケットを前記メモリから抽出するステップと、
    抽出したパケットを前記特定の出力ポートから送信するステップと、
    をコンピュータに実行させる論理装置。
  3. スイッチの出力キュー構造をバイパスするシステムであって、
    パケットを受信するためのスイッチの入力ポートと、
    受信したパケットを格納する前記スイッチのメモリと、
    転送リクエストデータベースを有するルーティングモジュールであって、格納されたパケットに及び前記スイッチの特定の出力ポートに関連し、前記格納されたパケットの前記メモリ内の場所を特定する転送リクエストを生成し、前記転送リクエストをメモリアクセスユニットに送信するルーティングモジュールと、
    前記特定の出力ポートに関連するメモリアクセスユニットであって、前記ルーティングモジュールから前記転送リクエストを受信し、前記特定の出力ポートに関連する出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定し、 前記転送リクエストを用いて、該転送リクエストに関連する前記パケットを前記メモリから抽出し、抽出したパケットを前記特定の出力ポートから送信するメモリアクセスユニットと、
    を有するシステム。
  4. 前記メモリアクセスユニットがリクエストバッファを有し、
    前記出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定することが、前記特定の出力ポートに関連するメモリアクセスユニットのリクエストバッファで未処理の転送リクエスト数を判定することを含み、
    前記メモリアクセスユニットは、前記リクエストバッファで未処理の転送リクエスト数が第1閾値未満であった場合に、前記転送リクエストが前記出力キュー構造をバイパスすることを引き起こす請求項3記載のシステム。
  5. 前記出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定することが、前記出力キュー構造で未処理の転送リクエスト数を判定することを含み、
    前記メモリアクセスユニットは、前記出力キュー構造で未処理の転送リクエスト数が第2閾値未満であった場合に、前記転送リクエストが前記出力キュー構造をバイパスすることを引き起こす請求項4記載のシステム。
  6. 前記転送リクエストにより前記出力キュー構造をバイパスしないように判定がなされ、
    前記メモリアクセスユニットは、前記出力キュー構造に前記転送リクエストを送信し、
    当該システムは、前記特手の出力ポートに関連する出力キュー構造を更に有し、前記転送リクエストを処理し、前記転送リクエストを選択する請求項3記載のシステム。
  7. 前記メモリアクセスユニットがリクエストバッファを有し、前記メモリアクセスユニットは、
    前記転送リクエストに関連するパケットを前記メモリから抽出する前に、前記特定の出力ポートに関連するメモリアクセスユニットのリクエストバッファに前記転送リクエストを置き、前記リクエストバッファは複数の転送リクエストを有し、前記複数の転送リクエストを整列させ、前記転送リクエストを選択する請求項3記載のシステム。
  8. 前記メモリアクセスユニットがリクエストバッファを有し、前記メモリアクセスユニットは、
    前記転送リクエストに関連するパケットを前記メモリから抽出する前に、前記特定の出力ポートに関連するメモリアクセスユニットのリクエストバッファに前記転送リクエストを置器、前記リクエストバッファは複数の転送リクエストを有し、前記複数の転送リクエストを先入れ先出し方式で処理し、前記転送リクエストを選択する請求項3記載のシステム。
  9. スイッチの出力キュー構造をバイパスするシステムであって、
    パケットを受信するためのスイッチの入力ポートと、
    受信したパケットを格納する前記スイッチのメモリと、
    転送リクエストデータベースを有するルーティングモジュールであって、格納されたパケットに及び前記スイッチの特定の出力ポートに関連し、前記格納されたパケットの前記メモリ内の場所を特定する転送リクエストを生成し、前記特定の出力ポートに関連する出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定するルーティングモジュールと、
    前記特定の出力ポートに関連するメモリアクセスユニットであって、前記転送リクエストを受信し、前記転送リクエストを用いて、該転送リクエストに関連する前記パケットを前記メモリから抽出し、受信したパケットを前記特定の出力ポートから送信するメモリアクセスユニットと、
    を有するシステム。
  10. 前記メモリアクセスユニットがリクエストバッファを有し、
    前記出力キュー構造をバイパスすることを前記転送リクエストにより引き起こすか否かを決定することが、前記特定の出力ポートに関連するメモリアクセスユニットのリクエストバッファで未処理の転送リクエスト数を判定することを含み、
    前記ルーティングモジュールは、前記リクエストバッファで未処理の転送リクエスト数が第1閾値未満であった場合に、前記転送リクエストが前記出力キュー構造をバイパスすることを引き起こす請求項9記載のシステム。
JP2007202624A 2006-08-04 2007-08-03 スイッチの出力キュー構造をバイパスする方法、論理装置及びシステム Expired - Fee Related JP4894670B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/462,402 2006-08-04
US11/462,402 US7826468B2 (en) 2006-08-04 2006-08-04 System and method for bypassing an output queue structure of a switch

Publications (2)

Publication Number Publication Date
JP2008042916A true JP2008042916A (ja) 2008-02-21
JP4894670B2 JP4894670B2 (ja) 2012-03-14

Family

ID=39029118

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007202624A Expired - Fee Related JP4894670B2 (ja) 2006-08-04 2007-08-03 スイッチの出力キュー構造をバイパスする方法、論理装置及びシステム

Country Status (2)

Country Link
US (1) US7826468B2 (ja)
JP (1) JP4894670B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012132263A1 (ja) * 2011-03-28 2012-10-04 パナソニック株式会社 中継器、中継器の制御方法、およびプログラム

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070268926A1 (en) * 2006-05-22 2007-11-22 Fujitsu Limited System and Method for Allocating Memory Resources in a Switching Environment
US20070268903A1 (en) * 2006-05-22 2007-11-22 Fujitsu Limited System and Method for Assigning Packets to Output Queues
US20070280104A1 (en) * 2006-06-01 2007-12-06 Takashi Miyoshi System and Method for Managing Forwarding Database Resources in a Switching Environment
US7826468B2 (en) 2006-08-04 2010-11-02 Fujitsu Limited System and method for bypassing an output queue structure of a switch
US7742408B2 (en) * 2006-08-04 2010-06-22 Fujitsu Limited System and method for filtering packets in a switching environment
US7971209B2 (en) * 2007-05-18 2011-06-28 Sap Ag Shortcut in reliable communication
US9148366B2 (en) * 2011-04-11 2015-09-29 Qualcomm Innovation Center, Inc. Interactive header compression in peer-to-peer communications
US8984206B2 (en) 2012-10-31 2015-03-17 International Business Machines Corporation Weightage-based scheduling for hierarchical switching fabrics
US8902899B2 (en) 2013-02-08 2014-12-02 International Business Machines Corporation Input buffered switching device including bypass logic
US9582440B2 (en) 2013-02-10 2017-02-28 Mellanox Technologies Ltd. Credit based low-latency arbitration with data transfer
US9298654B2 (en) 2013-03-15 2016-03-29 International Business Machines Corporation Local bypass in memory computing
US9641465B1 (en) * 2013-08-22 2017-05-02 Mellanox Technologies, Ltd Packet switch with reduced latency
AU2014311461B2 (en) * 2013-08-26 2017-02-16 VMware LLC CPU scheduler configured to support latency sensitive virtual machines
US9467396B2 (en) 2014-04-11 2016-10-11 International Business Machines Corporation Simultaneous transfers from a single input link to multiple output links with a timesliced crossbar

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003533107A (ja) * 2000-04-28 2003-11-05 スウィッチコア・アクチボラグ スイッチ内でパケット待ち行列を管理するための方法および装置

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5872783A (en) * 1996-07-24 1999-02-16 Cisco Systems, Inc. Arrangement for rendering forwarding decisions for packets transferred among network switches
US6188690B1 (en) * 1996-12-12 2001-02-13 Pmc-Sierra, Inc. Method and apparatus for high speed, scalable communication system
US6208649B1 (en) * 1998-03-11 2001-03-27 Cisco Technology, Inc. Derived VLAN mapping technique
US6735679B1 (en) * 1998-07-08 2004-05-11 Broadcom Corporation Apparatus and method for optimizing access to memory
US20050058149A1 (en) * 1998-08-19 2005-03-17 Howe Wayne Richard Time-scheduled and time-reservation packet switching
US6934283B1 (en) * 1999-11-08 2005-08-23 Hewlett-Packard Development Company, L.P. System and method for source defined packet routing
US6327625B1 (en) * 1999-11-30 2001-12-04 3Com Corporation FIFO-based network interface supporting out-of-order processing
US6922408B2 (en) * 2000-01-10 2005-07-26 Mellanox Technologies Ltd. Packet communication buffering with dynamic flow control
US6862280B1 (en) 2000-03-02 2005-03-01 Alcatel Priority remapping for data communication switch
US20040213237A1 (en) * 2000-06-29 2004-10-28 Toshikazu Yasue Network authentication apparatus and network authentication system
US7035255B2 (en) * 2000-11-14 2006-04-25 Broadcom Corporation Linked network switch configuration
US20020188754A1 (en) * 2001-04-27 2002-12-12 Foster Michael S. Method and system for domain addressing in a communications network
US6766389B2 (en) * 2001-05-18 2004-07-20 Broadcom Corporation System on a chip for networking
US6922749B1 (en) * 2001-10-12 2005-07-26 Agilent Technologies, Inc. Apparatus and methodology for an input port of a switch that supports cut-through operation within the switch
US6912602B2 (en) * 2001-11-20 2005-06-28 Broadcom Corporation System having two or more packet interfaces, a switch, and a shared packet DMA circuit
JP3868815B2 (ja) * 2002-01-10 2007-01-17 富士通株式会社 通信システム
US7039770B1 (en) * 2002-03-05 2006-05-02 Juniper Networks, Inc. Low latency request dispatcher
WO2004023732A1 (en) 2002-09-06 2004-03-18 Infineon Technologies Ag Method and apparatus for storing a port identifier in a lan switch
US6941407B2 (en) * 2002-09-27 2005-09-06 Hewlett-Packard Development Company, L.P. Method and apparatus for ordering interconnect transactions in a computer system
US7650413B2 (en) * 2003-02-07 2010-01-19 Fujitsu Limited Managing shared memory resources in a high-speed switching environment
US7701936B2 (en) * 2003-09-05 2010-04-20 Alcatel-Lucent Usa Inc. Obtaining path information related to a bridged network
US7349334B2 (en) * 2004-04-09 2008-03-25 International Business Machines Corporation Method, system and program product for actively managing central queue buffer allocation using a backpressure mechanism
US7688825B2 (en) * 2005-04-12 2010-03-30 Fujitsu Limited Filtering frames at an input port of a switch
US20070268903A1 (en) * 2006-05-22 2007-11-22 Fujitsu Limited System and Method for Assigning Packets to Output Queues
US20070268926A1 (en) * 2006-05-22 2007-11-22 Fujitsu Limited System and Method for Allocating Memory Resources in a Switching Environment
US20070280104A1 (en) * 2006-06-01 2007-12-06 Takashi Miyoshi System and Method for Managing Forwarding Database Resources in a Switching Environment
US7742408B2 (en) * 2006-08-04 2010-06-22 Fujitsu Limited System and method for filtering packets in a switching environment
US7826468B2 (en) 2006-08-04 2010-11-02 Fujitsu Limited System and method for bypassing an output queue structure of a switch

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003533107A (ja) * 2000-04-28 2003-11-05 スウィッチコア・アクチボラグ スイッチ内でパケット待ち行列を管理するための方法および装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012132263A1 (ja) * 2011-03-28 2012-10-04 パナソニック株式会社 中継器、中継器の制御方法、およびプログラム
JP5200197B2 (ja) * 2011-03-28 2013-05-15 パナソニック株式会社 中継器、中継器の制御方法、およびプログラム
US9294402B2 (en) 2011-03-28 2016-03-22 Panasonic Intellectual Property Management Co., Ltd. Router, method for controlling router, and program
US9444740B2 (en) 2011-03-28 2016-09-13 Panasonic Intellectual Property Management Co., Ltd. Router, method for controlling router, and program

Also Published As

Publication number Publication date
US20080031269A1 (en) 2008-02-07
JP4894670B2 (ja) 2012-03-14
US7826468B2 (en) 2010-11-02

Similar Documents

Publication Publication Date Title
JP4894670B2 (ja) スイッチの出力キュー構造をバイパスする方法、論理装置及びシステム
JP4823164B2 (ja) パケットをフィルタリングする方法、システム及び論理装置
JP4408375B2 (ja) 高速交換環境の不足ラウンドロビンスケジューリングをするシステム、方法及び論理
JP2007325271A (ja) スイッチ、スイッチングする方法及び論理装置
US20070268903A1 (en) System and Method for Assigning Packets to Output Queues
US20070268926A1 (en) System and Method for Allocating Memory Resources in a Switching Environment
JP6392745B2 (ja) サーバノード相互接続デバイス及びサーバノード相互接続方法
US7684424B2 (en) Memory interleaving in a high-speed switching environment
JP4833518B2 (ja) 高速交換環境でマルチキャストするシステム、方法及び論理
JP4446757B2 (ja) 高速交換環境で共有されたメモリ資源を管理するシステム、方法及び論理
JP2005278175A (ja) 誤り検査方法及び誤り検査システム
JP4408376B2 (ja) 交換のためにメモリに書き込まれるパケットをキューイングするシステム、方法及び論理
JP4852138B2 (ja) 高速交換環境でマルチキャスティングするシステム、方法及び論理
US9665519B2 (en) Using a credits available value in determining whether to issue a PPI allocation request to a packet engine
US20160124772A1 (en) In-Flight Packet Processing
JP4408374B2 (ja) 高速交換環境でパケットを交換するシステム、方法及び論理
US9548947B2 (en) PPI de-allocate CPP bus command
US9413665B2 (en) CPP bus transaction value having a PAM/LAM selection code field
US9699107B2 (en) Packet engine that uses PPI addressing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100416

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110906

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111102

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111212

R150 Certificate of patent or registration of utility model

Ref document number: 4894670

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150106

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees