JP4446757B2 - 高速交換環境で共有されたメモリ資源を管理するシステム、方法及び論理 - Google Patents

高速交換環境で共有されたメモリ資源を管理するシステム、方法及び論理 Download PDF

Info

Publication number
JP4446757B2
JP4446757B2 JP2004030782A JP2004030782A JP4446757B2 JP 4446757 B2 JP4446757 B2 JP 4446757B2 JP 2004030782 A JP2004030782 A JP 2004030782A JP 2004030782 A JP2004030782 A JP 2004030782A JP 4446757 B2 JP4446757 B2 JP 4446757B2
Authority
JP
Japan
Prior art keywords
block
credits
packet
credit
port module
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.)
Expired - Fee Related
Application number
JP2004030782A
Other languages
English (en)
Other versions
JP2004242333A (ja
Inventor
剛 清水
幸洋 中川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2004242333A publication Critical patent/JP2004242333A/ja
Application granted granted Critical
Publication of JP4446757B2 publication Critical patent/JP4446757B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Description

本発明は、一般的には、通信システムに関連し、特に、高速交換環境での共有されたメモリ資源を管理することに関連する。
高速シリアル相互接続が、通信環境で一般的になってきており、そして、その結果、これらの環境でスイッチが行う役割が、更に重要になってきている。伝統的なスイッチは、これらの相互接続をサポートするのに典型的に必要なスケーラビリティと交換速度を提供しない。
本発明の特定の実施例は、高速交換環境で伝統的に共有されたメモリ資源に関連する欠点と問題を減少又は、削除しうる。
本発明の特定の実施例は、高速交換環境で伝統的に共有されたメモリ資源に関連する欠点と問題を減少又は、削除しうる。
本発明の実施例では、高速交換環境で共有されたメモリ資源を管理するシステムは、複数のクレジットに対応する複数のブロックに論理的に分割されるデータメモリを有する。システムは、1つ又はそれ以上のクレジットを有する利用できるクレジットのプールを維持する、中央エージェントを有する。中央エージェントは、クレジットのプールから入力ポートへクレジットを割当てる。割当てられたクレジットは対応する1つのブロックが入力ポートモジュールに有効であることを示す。システムは、中央エージェントから受信された割当てられたクレジットを追跡し、パケットを受信し、パケットをデータメモリに書き込むために十分な割当てられたクレジットが有効かどうかを決定し、十分な割当てられたクレジットが有効である場合には、有効な1つ又はそれ以上の割当てられたクレジットに対応する1つ又はそれ以上のブロックにパケットを書き込む、複数の入力ポートを有する。システムは、ブロックから読み出し、読み出したブロックに対応するクレジットをクレジットのプールに戻す、複数の出力ポートを有する。
本発明の特定の実施例では、1つ又はそれ以上の利点を提供する。特定の実施例は、マルチキャストトラフィックに関連するメモリ要求を減少する。特定の実施例では、ポートモジュールはメモリ資源を共有し、これは、ラインの先頭(head−of−line)のブロッキングを除去し、メモリ要求を減少し、そして、ポートモジュールでの負荷状態の変化のさらに効率的な取り扱いを可能とする。特定の実施例は、カットスルー転送を提供し、これは、記憶及び転送技術の上の1つ又はそれ以上の利点を提供する。特定の実施例は、遅延されたカットスルー転送を提供し、これも、記憶及び転送技術の上の1つ又はそれ以上の利点を提供する。特定の実施例は、スイッチコアのスループットを増加させる。特定の実施例は、スイッチコアにより交換されるパケットの速度を増加する。特定の実施例は、スイッチコアのフォールスルー待ち時間を減少し、これは、クラスタ応用では重要である。特定の実施例は、単一の集積回路(IC)又はチップで具体化される。特定の実施例は、スイッチコアの電力消費を減少する。特定の実施例は、イーサネット(登録商標)スイッチ、INFINIBANDスイッチ、3GIOスイッチ、HYPERTRANSPORTスイッチ、RAPID IOスイッチ、又は、専用のバックプレーンスイッチのような異なる応用で使用されることが可能である。ある実施例は、これらの全ての、幾つかの利点を提供し又は提供せず、ある実施例は、図、記述及びここに含まれる請求項から当業者に容易に明らかな、1つ又はそれ以上の他の技術的な利点を提供する。
本発明とその特徴及び利点の更に完全な理解を提供するために、添付の図面と共に、以下の説明を参照する。
図1は、1つ又はそれ以上のサーバシステム14;1つ又はそれ以上の記憶システム16;1つ又はそれ以上のネットワークシステム18;及び、相互接続12を、1つ又はそれ以上のローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)又は他のネットワークを含む、1つ又はそれ以上の他のネットワーク、に結合する1つ又はそれ以上のルーティングシステム20の間の通信をサポートするシリアル又は他の相互接続12を含む例示のシステムエリアネットワーク10を示す。サーバシステム14は各々が、1つ又はそれ以上の中央処理ユニット(CPU)と1つ又はそれ以上のメモリユニットを有する。記憶システム16は各々が、1つ又はそれ以上のチャネルアダプタ(CA)、1つ又はそれ以上のディスクアダプタ(DA)及び1つ又はそれ以上のCPUモジュール(CM)を有する。相互接続12は、1つ又はそれ以上のスイッチ22を有し、これは、特定の実施例では、以下に更に完全に記載するように、イーサネット(登録商標)スイッチを有する。システムエリアネットワーク10の構成要素は、1つ又はそれ以上のリンクを使用して互いに結合され、その各々は、1つ又はそれ以上のコンピュータバス、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、インターネットの一部又は、他の配線、光、無線又は、他のリンクを有する。システムエリアネットワーク10は、特定の構成に互いに結合された特定の構成要素を有するように記載され且つ説明されるが、本発明は、適切な構成で互いに結合された適する構成要素を有する適する任意のシステムエリアネットワークを考慮する。
図2は、システムエリアネットワーク10の例示のスイッチ22を示す。スイッチ22は、複数のポート24とスイッチコア26を有する。ポート24は各々が、スイッチコア26と(サーバシステム14、記憶システム16、ネットワークシステム18、ルーティングシステム20又は、他のスイッチ22のような)システムエリアネットワーク10の構成要素に結合されている。第1ポート24は、システムエリアネットワーク10の第1構成要素からパケットを受信し、パケットをシステムエリアネットワーク10の第2の構成要素へ通信する第2ポート24へ交換するためにスイッチコア26へパケットを通信する。パケットへの参照は、適切な、パケット、データグラム、フレーム又は、他のデータの単位を含みうる。スイッチコア26は、第1ポート24からパケットを受信し、以下に更に完全に記載するように、1つ又はそれ以上の第2ポート24へパケットを交換する。特定の実施例では、スイッチ22は、イーサネット(登録商標)スイッチを含む。特定の実施例では、スイッチ22は、有線速度又はその付近でパケットを交換できる。
図3は、スイッチ22の例示のスイッチコア26を示す。スイッチコア26は、12のポートモジュール28、ストリームメモリ30、タグメモリ32、中央エージェント34及びルーティングモジュール36を有する。スイッチコア26の構成要素は、バス又は他のリンクを使用して互いに結合される。特定の実施例では、スイッチコア26は、単一のICで具体化される。スイッチコア26の省略時(デフォルト)モードでは、システムエリアネットワーク10の第1構成要素からスイッチコア26により受信されたパケットは、スイッチコア26が全体のパケットを受信する前に、スイッチコア26からシステムエリアネットワーク10の1つ又はそれ以上の第2構成要素へ通信されうる。特定の実施例では、カットスルー転送は、(減少された待ち時間、減少されたメモリ要求、及び増加されたスループットのような)記憶及び転送技術の上の1つ又はそれ以上の利点を提供する。スイッチコア26は、異なる応用についても構成されうる。例でありそして限定されないとして、スイッチコア26は、(10ギガバイトイーサネット(登録商標)スイッチ22又は特定の実施例のイーサネット(登録商標)スイッチ22を含む)イーサネット(登録商標)スイッチ22、INFINIBANDスイッチ22、3GIOスイッチ22、HYPERTRANSPORTスイッチ22、RAPID IOスイッチ22、又は、記憶システム16、ネットワークシステム18又は、両方のための専用のバックプレーンスイッチ22又は、他のスイッチ22について、構成されることが可能である。
ポートモジュール28は、スイッチ22のスイッチコア26とポート24の間のインターフェースを提供する。ポートモジュール28は、ポート24、ストリームメモリ30、タグメモリ32、中央エージェント34、及びルーティングテーブル36に結合される。特定の実施例では、ポートモジュール28は、(システムエリアネットワーク10の構成要素からパケットを受信しそしてストリームメモリ30へパケットを書き込むのに使用される)入力論理と(ストリームメモリ30からパケットを読み出しそしてパケットをシステムエリアネットワーク10の構成要素へ通信するのに使用される)出力論理の両方を有する。代わりとして、特定の実施例では、ポートモジュール28は、入力論理のみ又は出力論理のみを有する。ポートモジュール28への参照は、適切な場合に、入力論理、出力論理又は、両方を有するポートモジュール28を含む、ポートモジュール28は、入力フロー制御のための入力バッファも含みうる。イーサネット(登録商標)スイッチ22では、ポーズ機能が、入力フロー制御について使用され得、これは効果的であるために時間がかかる。ポートモジュール28の入力バッファは、ポーズ機能が入力するパケットを止める前に送られたパケットの一時的な記憶に使用される。入力フロー制御についてクレジットがエクスポート(移出)される場合には、入力バッファは不要であるので、INFINIBANDスイッチ22の場合のように、入力バッファは任意である。特定の実施例では、ポートモジュール28をストリームメモリ30に結合するリンクは、(データがポートモジュール28からストリームメモリ30に書き込まれるスイッチコア26の動作を含む)書き込み動作のためのものとそして、(データがストリームメモリ30からポートモジュール28に読み出されるスイッチコア26の動作を含む)読み出し動作のためのものの、2つのリンクを有する。これらのリンクの各々は、36ビットを送り、ポートモジュール28とストリームメモリ30の間のデータ経路を両方向に36ビット幅にする。
システムエリアネットワーク10の第1構成要素から第1ポートモジュール28により受信されるパケットは、第1ポートモジュール28からストリームメモリ30へ書き込まれ、そして後に、第2ポートモジュール28からシステムエリアネットワーク10の1つ又はそれ以上の第2構成要素への通信のために、ストリームメモリ30から1つ又はそれ以上の第2ポートモジュール28へ読み出される。ポートモジュール28により受信されている又はそこから通信されているパケットへの参照は、適切に、ポートモジュール28により受信されている又はそこから通信されている全体のパケット又は、ポートモジュール28により受信されている又はそこから通信されているパケットの一部を含みうる。同様に、ストリームメモリ30へ書き込まれている又はそこから読み出されているパケットへの参照は適切に、ストリームメモリ30へ書き込まれている又はそこから読み出されている全体のパケット又は、ストリームメモリ30へ書き込まれている又はそこから読み出されているパケットの一部のみを含みうる。入力論理を含むポートモジュール28は、ストリームメモリ30に書き込むことが可能であり、そして、出力論理含むポートモジュール28は、ストリームメモリ30から読み出すことがことが可能である。特定の実施例では、ポートモジュール28によるストリームメモリ30の共有は、ラインの先頭のブロッキングを除去し(それによりスイッチコア26のスループットを増加し)、スイッチコア26に関連するメモリ要求を減少し、そして、スイッチコア26が、ポートモジュール28での負荷状態の変化を更に効率的に扱うことを可能とする。
スイッチコア26のストリームメモリ30は、図4に示されたように、論理的にブロック38に分割され、これは更に、ワード40に分割される。行はブロック38を示しそして、行と列の交差点は、ブロック38のワード40を示す。特定の実施例では、ストリームメモリ30は、1536ブロック38に分割され、各ブロック38は、24ワード40を含み、ワード40は72ビットを有する。ストリームメモリ30は、特定の数のビットを含む特定の数のワード40に分割された特定の数のブロック38に分割されているように記述されそして説明されているが、本発明は、ストリームメモリ30が、適する数のビットを含む適する数のワード40に分割された適する数のブロック38に分割されていることを考慮する。パケットサイズは、パケットごとに異なることが可能である。ブロック38と同じ又はそれより少ないビットを含むパケットが1つのブロック38に書き込まれることが可能であり、そして、ブロック38よりも多くのビットを含むパケットは、互いに連続である必要はない、1つより多くのブロック38に書き込まれることが可能である。
ブロック38への書き込み又はそこからの読み出しのときには、ポートモジュール28は、ブロック38の任意のワード40から開始でき、そして、順次にブロック38のワード40へ書き込み又はそこから読み出すことが可能である。ポートモジュール28は、ブロック38へ書き込みそこから読み出しながら、ブロック38の第1ワード40へラップアラウンドすることも可能である。ブロック38は、書き込み動作又は読み出し動作でブロック38を識別するために使用されるアドレスを有し、そして、オフセットは、書き込み動作又は読み出し動作でブロック38のワード40を識別するために使用される。例として、4176ビット長のパケットを考えるとする。パケットは、ブロック38aのワード40fで開始しそしてブロック38bを含まず、ブロック38dのワード40kへ続く、58のワード40に書き込まれる。書き込み動作では、ブロック38aのワード40fは、第1アドレスと第1オフセットで識別され、ブロック38cのワード40fは、第2アドレスと第2オフセットで識別され、そして、ブロック38dのワード40fは、第3アドレスと第3オフセットで識別される。パケットは、ブロック38aのワード40fで開始しそしてブロック38bを含まず、ブロック38dのワード40kへ続く、ストリームメモリ30から読み出される。読み出し動作では、ブロック38aのワード40fは、第1アドレスと第1オフセットで識別され、ブロック38cのワード40fは、第2アドレスと第2オフセットで識別され、そして、ブロック38dのワード40fは、第3アドレスと第3オフセットで識別される。
タグメモリ32は、各々が、書き込むべき次のブロック38を決定するために第1ポートモジュール28によりそして、そこから読み出すべき次のブロック38を決定するために1つ又はそれ以上の第2ポートモジュール28により使用される、複数のリンクされたリストを有する。タグメモリ32は、以下に更に完全に説明するように、ポートモジュール28からストリームメモリ30への書き込み動作のためにポートモジュール28に有効になされることが可能である次のブロック38を決定するために、中央エージェント34により使用され得るリンクされたリストも有する。タグメモリ32は、複数のエントリを有し、その少なくとも幾つかは各々が、ストリームメモリ30のブロック38に対応する。ストリームメモリ30の各ブロック38は、タグメモリ32内に対応するエントリを有する。タグメモリ32内のエントリは、タグメモリ32内の他のエントリへのポインタを有することが可能であり、この結果リンクされたリストとなる。
ポートモジュール28からストリームメモリ30への書き込み動作のためにポートモジュール28に有効であるブロック38に対応するタグメモリ32内のエントリは、ポートモジュール28がリンクされたエントリを使用して書き込むべき次のブロック38を決定できるように、ともにリンクされている。例として、ポートモジュール28からストリームメモリ30への書き込み動作のためにポートモジュール28に有効である4つのブロック38を考えるとする。第1ブロック38に対応するタグメモリ32内の第1エントリは、第2ブロック38へのポインタを有し、第2ブロック38に対応するタグメモリ32内の第2エントリは、第3ブロック38へのポインタを有し、そして、第3ブロック38に対応するタグメモリ32内の第3エントリは、第4ブロック38へのポインタを有する。ポートモジュール28は第1ブロック38へ書き込みそして、ポートモジュール28が第1ブロック38に書き込んでいる間に、書き込むべき次のブロック38を決定するために第1エントリ内のポインタを使用する。ポインタはポートモジュール28に第2ブロック38を示し、そして、ポートモジュール28が第1ブロック38への書き込みを終了したときに、ポートモジュール28は第2ブロック38へ書き込む。ポートモジュール28が第2ブロック38へ書き込んでいる間に、ポートモジュール28は、書き込むべき次のブロック38を決定するために第2エントリ内のポインタを使用する。ポインタはポートモジュール28に第3ブロック38を示し、そして、ポートモジュール28が第2ブロック38への書き込みを終了したときに、ポートモジュール28は第3ブロック38へ書き込む。ポートモジュール28が第3ブロック38へ書き込んでいる間に、ポートモジュール28は、書き込むべき次のブロック38を決定するために第3エントリ内のポインタを使用する。ポインタはポートモジュール28に第4ブロック38を示し、そして、ポートモジュール28が第3ブロック38への書き込みを終了したときに、ポートモジュール28は第4ブロック38へ書き込む。タグメモリ32内のリンクされたリストは、書き込むべき次のブロック38を決定するために、1つより多くのポートモジュール28により使用されることができない。
ブロック38がポートモジュール28からストリームメモリ30への書き込み動作のためにポートモジュール28に有効になされたときには、ブロック38に対応するタグメモリ32内のエントリは、ポートモジュール28が書き込むべき次のブロック38を決定するために使用しているリンクされたリストへ追加されうる。例として、上述のリンクされたリストを考えるとする。第4エントリがリンクされたリストの最後のエントリである場合には、第5ブロック38がポートモジュール28に有効になされるときに、第4エントリは第5ブロック38へのポインタを含むように修正されうる。
書き込むべき次のブロック38を決定するために第1ポートモジュール28が使用しているタグメモリ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から読み出している間に、読み出すべき次のブロック38を決定するために第1エントリ内のポインタを使用する。ポインタは第2ポートモジュール28に第2ブロック38を示し、そして、第2ポートモジュール28が第1ブロック38からの読み出しを終了したときに、第2ポートモジュール28は、第2ブロック38から読み出す。第2ポートモジュール28が第2ブロック38から読み出している間に、ポートモジュール28は、読み出すべき次のブロック38を決定するために第2エントリ内のポインタを使用する。ポインタは第2ポートモジュール28に第3ブロック38を示し、そして、第2ポートモジュール28が第2ブロック38からの読み出しを終了したときに、第2ポートモジュール28は、第3ブロック38から読み出す。第2ポートモジュール28が第3ブロック38から読み出しそして、第3ブロック38内のエンドマークを使用し、パケットの最終部分が第3ブロック38に書き込まれたことを決定する。タグメモリ32内のリンクされたリストは、書き込むべき次のブロック38を決定するために、1つより多くの第1ポートモジュール28により使用されることができないが、リンクされたリストは読み出すべき次のブロック38を決定するために1つ又はそれ以上の第2ポートモジュール28により使用されることが可能である。
異なるパケットは、異なる宛先を有しそして、パケットがストリームメモリ30を通る順序は、先入れ、先出し(ファーストイン、ファーストアウト、FIFO)である。例として、第2パケットが受信されそして1つ又はそれ以上の第2ブロック38に書き込まれる前に、受信されそして1つ又はそれ以上の第1ブロック38に書き込まれた第1パケットを考える。第2パケットは、第1パケットよりも前にストリームメモリ30から読み出されると、第2ブロック38は第1ブロック38の前に他の書き込み動作に対して有効となる。特定の実施例では、パケットが書き込まれたストリームメモリ30のブロック38は、パケットのポートモジュール28に指定されている全てのポートモジュール28によりブロック38からパケットが読み出されたすぐ後に、ポートモジュール28からブロック38への書き込み動作のために、ポートモジュール28へ有効になされる。パケットの指定されたポートモジュール28は、システムエリアネットワーク10の構成要素、スイッチコア26からの下流、即ちパケットの最終又は中間宛先へ、結合されたポートモジュール28を有する。
特定の実施例では、クレジットがポートモジュール28の入力論理に割当てられ、そして、書き込み動作を管理するのに使用される。書き込み動作を管理するのにクレジット使用することは、スイッチコア26によるカットスルー転送を容易にでき、これは、待ち時間(レーテンシ)を減少し、スループットを増加し、そして、スイッチコア26に関連するメモリ要求を減少する。また、クレジットが書き込み動作を管理するために使用される場合には、どの時点でどのブロック38にどのポートモジュール28が書き込めるかに関する決定が、ポートモジュール28で局所的に行われることが可能であり、これは、スイッチコア26のスループットと交換速度を増加する。書き込み動作を管理するのにクレジット使用することは、ラインの先頭のブロッキングも除去できそして、ポートモジュール28で負荷状態の変化に応じてポートモジュール28間でメモリ資源の分配のより大きな柔軟性を提供できる。クレジットは、ストリームメモリ30のブロック38に対応しそして、ブロック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からパケットを読み出したすぐ後にクレジットのプールに戻される。
中央エージェント34は、クレジットを、クレジットのプールから、ポートモジュール28へ割当てることができる。例として、中央エージェント34は、ポートモジュール28への予め定められた数のクレジットの初期割当を行うことが可能である。特定の実施例では、中央エージェント34は、スイッチコア26の開始で又はスイッチコア26がリセットされるのに応じて、ポートモジュール28へのクレジットの初期割当を行うことが可能である。他の例として、中央エージェント34は、ポートモジュール28が使用している他のクレジットを置き換えるためにポートモジュール28へクレジットを割当てることができる。特定の実施例では、ポートモジュール28が第1クレジットを使用するときには、ポートモジュール28は、ポートモジュール28が第1クレジットを使用していることを中央エージェント34に通知し、そして、ポートモジュール28が第1クレジットを使用していることを中央エージェント34に通知するポートモジュール28に応じて、しかし、ポートモジュール28により使用されているブロック38の数が適用可能な限度に合わない又は超えている場合にのみ、中央エージェント34は第2クレジットを第1クレジットと置き換えるようにポートモジュール28へ割当る。ポートモジュール28により使用されているブロック38への参照は、パケットがポートモジュール28から書き込まれている及びそれからパケットの全ての指定されたポートモジュール28がパケットを読み出していない、ブロック38を含む。適用可能な限度まで、ポートモジュール28により使用されるクレジットを、置き換えることにより、ポートモジュール28へ有効なクレジットの数は、比較的一定に保たれ、そして、ポートモジュール28で負荷状態が上昇する場合には、更なるブロック38が、ポートモジュール28での負荷状態の増加に応じてポートモジュール28へ供給されることが可能である。限度はポートモジュール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に割当てながら、ポートモジュール28に割当てる次のクレジットを決定するために第1エントリ内のポインタを使用する。ポインタは、中央エージェント34に第2ブロック38を示し、そして、中央エージェント34がポートモジュール28への第1クレジットの割当てを終了したときに、中央エージェント34はポートモジュール28へ第2クレジットを割当てる。中央エージェント34は第2クレジットをポートモジュール28に割当てながら、中央エージェント34はポートモジュール28に割当てる次のクレジットを決定するために第2エントリ内のポインタを使用する。ポインタは、中央エージェント34に第3ブロック38を示し、そして、中央エージェント34がポートモジュール28への第2クレジットの割当てを終了したときに、中央エージェントはポートモジュール28へ第3クレジットを割当てる。中央エージェント34は第3クレジットをポートモジュール28に割当てながら、中央エージェント34はポートモジュール28に割当てる次のクレジットを決定するために第3エントリ内のポインタを使用する。ポインタは、中央エージェント34に第4ブロック38を示し、そして、中央エージェント34がポートモジュール28への第3クレジットの割当てを終了したときに、中央エージェントはポートモジュール28へ第4クレジットを割当てる。
ブロック38に対応するクレジットがクレジットのプールに戻されたときに、ブロック38に対応するタグメモリ32内のエントリは、ポートモジュール28に割当てる次のクレジットを決定するために中央エージェント34が使用しているリンクされたリストの最後に加えられる。例として、上述のリンクされたリストを考える。第4のエントリがリンクされたリストの最後の要素である場合には、第5ブロック38に対応する第5クレジットがクレジットのプールに追加されたときに、第4エントリは、第5ブロック38に対応するタグメモリ32内の第5エントリへのポインタを含めるように修正されうる。タグメモリ32内のエントリは各々が、ストリームメモリ30のブロック38に対応し、ブロック38へ指すポインタもタグメモリ32内のエントリを指す。
ポートモジュール28が入力するパケットを受信するときには、ポートモジュール28は、ストリームメモリ30へパケットを書き込むために十分なクレジットがポートモジュール28に有効かどうかを決定する。特定の実施例では、ストリームメモリ30へパケットを書き込むために十分なクレジットがポートモジュール28に有効な場合には、ポートモジュール28は1つ又はそれ以上のクレジットを使用して、ストリームメモリ30へパケットを書き込む。特定の実施例では、ストリームメモリ30へパケットを書き込むために十分なクレジットがポートモジュール28に有効でない場合には、ポートモジュール28は、パケットを入力バッファに書き込みそして、後に、ストリームメモリ30へパケットを書き込むために十分なクレジットがポートモジュール28に有効になったときに、1つ又はそれ以上のクレジットを使用して、ストリームメモリ30へパケットを書き込む。入力バッファにパケットを書き込むポートモジュール28の代わりとして、ポートモジュール28はパケットを中断することが可能である。特定の実施例では、ストリームメモリ30へパケットの一部のみを書き込むために十分なクレジットがポートモジュール28に有効な場合には、ポートモジュール28は1つ又はそれ以上のクレジットを使用して、ストリームメモリ30へ書き込まれるべきパケットの一部をストリームメモリ30に書き込むことができ、そして、パケットの1つ又はそれ以上の他の部分を入力バッファに書き込むことができる。後に、ストリームメモリ30へパケットの1つ又はそれ以上の他の部分を書き込むために十分なクレジットがポートモジュール28に有効になったときに、ポートモジュール28は、1つ又はそれ以上のクレジットを使用して、ストリームメモリ30へパケットの1つ又はそれ以上の他の部分を書き込むことができる。特定の実施例では、カットスルー転送のような、遅延されたカットスルー転送が、記憶及び転送技術の上の(減少された待ち時間、減少されたメモリ要求、及び増加されたスループットのような)1つ又はそれ以上の利点を提供する。ストリームメモリ30へパケットを書き込むために十分なクレジットがポートモジュール28に有効かどうかを決定するポートモジュール28への参照は、ストリームメモリ30へ全体のパケットを書き込むために、ストリームメモリ30へパケットの受信された部分のみを書き込むために又は、ストリームメモリ30へパケットの少なくとも一部分を書き込むために、十分なクレジットがポートモジュール28に有効どうかを決定するポートモジュール28を含む。
特定の実施例では、全体のパケッが受信されるまで入力パケットの長さを知ることができない。これらの実施例では、(標準の適用可能なセットに従った)最大パケットサイズが、ストリームメモリ30へポートモジュール28により受信された入力パケットを書き込むために十分なクレジットがポートモジュール28に有効かどうかを決定するのに使用されることが可能である。電気電子工学会(IEEE)により発行された標準のセットに従って、イーサネット(登録商標)フレームの最大サイズは1500バイトである。標準のデファクトのセットに従って、イーサネット(登録商標)フレームの最大サイズは9000バイトである。例としてそして限定しないとして、入力パケットの一部のみを受信したポートモジュール28を考える。ポートモジュール28は、ストリームメモリ30へ全体のパケットを書き込むために十分なクレジットがポートモジュール28に有効かどうかを決定するのに、(標準の適用可能なセットに従った)最大パケットサイズを使用する。ポートモジュール28は、最大パケットサイズとポートモジュール28に有効なクレジットの数を比較することにより、この決定を行うことが可能である。ストリームメモリ30へ全体のパケットを書き込むために十分なクレジットがポートモジュール28に有効な場合には、ポートモジュール28は、1つ又はそれ以上のクレジットを使用してストリームメモリ30へパケットの受信された部分を書き込むことができそして、ポートモジュール28がパケットの1つ又はそれ以上の他の部分を受信したときに、1つ又はそれ以上のクレジットを使用してストリームメモリ30へパケットの1つ又はそれ以上の他の部分を書き込むことができる。
ポートモジュール28は、カウンタを使用してポートモジュール28に有効なクレジットの数を監視できる。中央エージェント34が、クレジットをポートモジュール28に割当てるときに、ポートモジュール28はある量だけカウンタを増加しそして、ポートモジュール28がクレジットを使用するときに、ポートモジュール28はある量だけカウンタを減じる。カウンタの現在の値は、ポートモジュール28に有効なクレジットの現在の数を示し、そして、ポートモジュール28は、ポートモジュール28からストリームメモリ30へパケットを書き込むために十分なクレジットがポートモジュール28に有効かどうかを決定するために、カウンタを使用できる。中央エージェント34も、カウンタを使用してポートモジュール28に有効なクレジットの数を監視できる。中央エージェント34が、クレジットをポートモジュール28に割当てるときに、中央エージェント34はある量だけカウンタを増加しそして、ポートモジュール28がクレジットを使用したことを、ポートモジュール28が中央エージェント34に通知するときに、中央エージェント34は、ある量だけカウンタを減じる。カウンタの現在の値は、ポートモジュール28に有効なクレジットの現在の数を示し、そして、中央エージェント34は、ポートモジュール28へ1つ又はそれ以上のクレジットを割当てるかどうかを決定するために、カウンタを使用できる。中央エージェント34は、カウンタを使用しているポートモジュール28により使用されているブロック38の数も監視できる。ポートモジュール28が中央エージェント34へ、ポートモジュール28がブロック38へ書き込んだことを通知するときには、中央エージェントは、ある量だけカウンタを増加しそして、ポートモジュール28が書き込んだブロック38が解放されそしてブロック38に対応するクレジットがクレジットのプールに戻されたときに、中央エージェントはある量だけカウンタを減じる。
ポートモジュール28へ有効なクレジットの数は一定に保たれ、そして、ポートモジュール28により使用されているブロック38の数は制限される。制限は、ポートモジュール28、1つ又はそれ以上の他のポートモジュール28又は、両方での負荷状態の変化に応じて変化される。特定の実施例では、ポートモジュール28により使用されているブロック38の数は、クレジットのプール内のクレジットの数の関数である動的なしきい値に従って、制限される。アクティブなポートモジュール28は、特定の実施例では、1つ又はそれ以上のブロック38を使用しているポートモジュール28を含む。ブロック38を使用しているポートモジュール28への参照は、ストリームメモリ30からパケットの全ての指定されたポートモジュール28へ読み出しされてないストリームメモリ30へ少なくとも1つのパケットを書き込んだポートモジュール28を含む。動的なしきい値は、以下の式を使用して計算されたクレジットのプール内のクレジットの数の一部分を含むことが出き、αはアクティブなポートモジュール28の数に等しくそしてρはパラメータであり:
Figure 0004446757
クレジットのプール内のクレジットの数は、各々がポートモジュール28により使用されているブロック38の数が、上述の動的なしきい値を含みうる、適用可能な限度を超える場合には、中央エージェント34がポートモジュール28へクレジットを割当てることを避けるために確保されうる。クレジットのプール内の1つ又はそれ以上のクレジットを確保することは、アクティブであるポートモジュール28の数の変化に関連する変化期間中のクッションを提供できる。確保されたクレジットの一部分は、以下の式を使用して計算され、αはアクティブなポートモジュール28の数に等しくそしてρはパラメータであり:
Figure 0004446757
上述の式に従って、1つのポートモジュール28がアクティブで、ρが2の場合には、中央エージェント34はクレジットの3分の1を確保し、そして、ポートモジュール28へクレジットの3分の2を割当て;2つのポートモジュール28がアクティブで、ρが1の場合には、中央エージェント34はクレジットの3分の1を確保し、そして、アクティブである各ポートモジュール28へクレジットの3分の1を割当て;12つのポートモジュール28がアクティブで、ρが0.5の場合には、中央エージェント34はクレジットの14分の2を確保し、そして、アクティブである各ポートモジュール28へクレジットの14分の1を割当てる。特定の限度が、ポートモジュール28により使用されているブロック38の数に適用されているように記載されているが、本発明は、ポートモジュール28により使用されているブロック38の数に適用される任意の適する限度を考慮する。
第1ポートモジュール28がストリームメモリ30にパケットを書き込むときには、第1ポートモジュール28は、パケットの指定されたポートモジュール28である1つ又はそれ以上の第2ポートモジュール28を識別するためにルーティングモジュール36が使用できるパケットのヘッダからの情報(1つ又はそれ以上の宛先アドレスなど)をルーティングモジュール36へ通信できる。第1ポートモジュール28は、ストリームメモリ30からパケットを読むために第2ポートモジュール28により共に使用されるパケットが書き込まれた第1ブロック38のアドレスとオフセットをも、ルーティングモジュール36へ通信できる。ルーティングモジュール36は、1つ又はそれ以上のルーティングテーブルとパケットのヘッダからの情報を使用して第2ポートモジュール28を識別できそして、第2ポートモジュール28の識別後に、第1ブロック38のアドレスとオフセットを各第2ポートモジュール28へ通信し、これは、以下に更に完全に記載するように、第2ポートモジュール28が、出力キューへ追加されることが可能である。

ポートモジュール28は、ポートモジュール28を通してスイッチコア26から通信するために、ストリームメモリ30へ書き込まれたパケットを待たせるのに使用される1つ又はそれ以上の出力キューを有することが可能である。パケットがストリームメモリ30へ書き込まれるときには、パケットはそのパケットの各指定されたポートモジュール28の出力キューに追加される。指定されたポートモジュール28の出力キューは、サービスの品質(QoS)のレベルとソースポートモジュール28の組合せに対応する。例として、3レベルのQoSを提供しそして入力論理と出力論理の両方を含む4つのポートモジュール28を有するスイッチコア26を考える。第1ポートモジュール28は9の出力キュー:第1レベルのQoSと第2ポートモジュール28に対応する第1出力キュー;第1レベルのQoSと第3ポートモジュール28に対応する第2出力キュー;第1レベルのQoSと第4ポートモジュール28に対応する第3出力キュー;第2レベルのQoSと第2ポートモジュール28に対応する第4出力キュー;第2レベルのQoSと第3ポートモジュール28に対応する第5出力キュー;第2レベルのQoSと第4ポートモジュール28に対応する第6出力キュー;第3レベルのQoSと第2ポートモジュール28に対応する第7出力キュー;第3レベルのQoSと第3ポートモジュール28に対応する第8出力キュー;第3レベルのQoSと第4ポートモジュール28に対応する第9出力キューを有する。(1)パケットが第2ポートモジュール28からストリームメモリ30に書き込まれ、(2)第1ポートモジュール28はそのパケットの指定されたポートモジュール28であり、そして(3)そのパケットのQoSのレベルは第1レベルのQoSである場合には、ストリームメモリ30に書き込まれたパケットは、第1ポートモジュール28の第1出力キューに追加される。(1)パケットが第3ポートモジュール28からストリームメモリ30に書き込まれ、(2)第1ポートモジュール28はそのパケットの指定されたポートモジュール28であり、そして(3)そのパケットのQoSのレベルは第2レベルのQoSである場合には、ストリームメモリ30に書き込まれたパケットは、第1ポートモジュール28の第5出力キューに追加される。(1)パケットが第4ポートモジュール28からストリームメモリ30に書き込まれ、(2)第1ポートモジュール28はそのパケットの指定されたポートモジュール28であり、そして(3)そのパケットのQoSのレベルは第3レベルのQoSである場合には、ストリームメモリ30に書き込まれたパケットは、第1ポートモジュール28の第9出力キューに追加される。
第2ポートモジュール28は9の出力キュー:第1レベルのQoSと第1ポートモジュール28に対応する第1出力キュー;第1レベルのQoSと第3ポートモジュール28に対応する第2出力キュー;第1レベルのQoSと第4ポートモジュール28に対応する第3出力キュー;第2レベルのQoSと第1ポートモジュール28に対応する第4出力キュー;第2レベルのQoSと第3ポートモジュール28に対応する第5出力キュー;第2レベルのQoSと第4ポートモジュール28に対応する第6出力キュー;第3レベルのQoSと第1ポートモジュール28に対応する第7出力キュー;第3レベルのQoSと第3ポートモジュール28に対応する第8出力キュー;第3レベルのQoSと第4ポートモジュール28に対応する第9出力キューを有する。(1)パケットが第1ポートモジュール28からストリームメモリ30に書き込まれ、(2)第2ポートモジュール28はそのパケットの指定されたポートモジュール28であり、そして(3)そのパケットのQoSのレベルは第1レベルのQoSである場合には、ストリームメモリ30に書き込まれたパケットは、第2ポートモジュール28の第1出力キューに追加される。(1)パケットが第3ポートモジュール28からストリームメモリ30に書き込まれ、(2)第2ポートモジュール28はそのパケットの指定されたポートモジュール28であり、そして(3)そのパケットのQoSのレベルは第2レベルのQoSである場合には、ストリームメモリ30に書き込まれたパケットは、第2ポートモジュール28の第5出力キューに追加される。(1)パケットが第4ポートモジュール28からストリームメモリ30に書き込まれ、(2)第2ポートモジュール28はそのパケットの指定されたポートモジュール28であり、そして(3)そのパケットのQoSのレベルは第3レベルのQoSである場合には、ストリームメモリ30に書き込まれたパケットは、第2ポートモジュール28の第9出力キューに追加される。
第3ポートモジュール28と第4ポートモジュール28は各々が、上述の第1ポートモジュール28の出力キューと第2ポートモジュール28の出力キューと同様な出力キューを有する。QoSは、伝送のレート、誤りのレート、又は、スイッチコア26を通るパケットの通信の他の面を含み、QoSへの参照は、適切なら、サービスのクラス(CoS)を含むことが可能である。第1ポートモジュール28の出力キューは、第2ポートモジュール28とQoSのレベルに対応するとして記載されているが、第1ポートモジュール28の出力キューは第2ポートモジュール28とQoSのレベルに必ずしも対応する必要はない。例として、特定の実施例では、第1ポートモジュール28の出力キューは、第2ポートモジュール28に対応しQoSのレベルに対応しない。
ポートモジュール28の出力キューは、ポートモジュール28のレジスタと、出力キューに1より多くのパケットがある場合には、以下に記載するように、ポートモジュール28のメモリ構造内の1つ又はそれ以上のエントリを含む。ポートモジュール28は、ストリームメモリ30から読み出されるべき次のパケットを決定するために、1つ又はそれ以上のレジスタと共に、ポートモジュール28が使用できる1つ又はそれ以上のリンクされたリストを有することが可能である。メモリ構造は、複数のエントリを有し、その少なくとも幾つかは各々が、ストリームメモリ30のブロック38に対応する。ストリームメモリ30の各ブロック38は、メモリ構造内に対応するエントリを有する。メモリ構造内のエントリは、メモリ構造内の他のエントリへのポインタを含み、リンクされたリストとなる。ポートモジュール28は、ポートモジュール28もストリームメモリ30から読み出されるべき次のパケットを決定するために使用できる、1つ又はそれ以上のレジスタを有することも可能である。レジスタは、書き込みポインタ、オフセット及びリードポインタを有する。書き込みポインタは、第1パケットが書き込まれた第1ブロック38を示し、オフセットは第1パケットが書き込まれた第1ワード40を示し、そして、読み出しポインタは、第2パケット(第1パケットと同じ又は第1パケットと異なるパケット)が書き込まれた、第1ブロック38を示す。メモリ構造内のエントリの各々がストリームメモリ30のブロック38に対応するので、ブロック38を示すポインタもメモリ構造内のエントリを示す。
ポートモジュール28は、オフセットを書き込むメモリ構造内の次のエントリを決定するために書き込みポインタを使用できる。ポートモジュール28は、ブロック38から読み出しを開始するブロック38のワード40を決定するためにオフセットを使用できる。ポートモジュール28は、ストリームメモリ30から読み出すべき次のパケットを決定するために読み出しポインタを使用できる。ポートモジュール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を示すように、変更されずに残る。以下に更に完全に説明するように、読み出しポインタは、ポートモジュール28がストリームメモリ30から出力キューのパケットを読むときに変更される。ポートモジュール28がストリームメモリ30から第1パケットと第2パケットを読む前に、第3パケットが、出力キューに追加される場合には、(1)書き込みポインタは第3パケットが書き込まれた第1ブロック38を示すように修正され、(2)オフセットは第2パケットが書き込まれた第1ブロック38に対応するメモリ構造内の第2エントリに書き込まれそして、第3パケットが書き込まれた第1ワード40を示すように修正され、そして(3)第2エントリ内のポインタは第3パケットが書き込まれた第1ブロック38を示すように修正される。読み出しポインタは、第3パケットが出力キューに追加された後に、読み出しポインタはまだ第1パケットが書き込まれた第1ブロック38を示すように、再び変更されずに残る。
ポートモジュール28は、ストリームメモリ30から読むべき次のパケットを決定するために、出力キューを使用する。例として、3パケットがある上述の出力キューを考える。レジスタでは、(1)書き込みポインタは第3パケットが書き込まれた第1ブロック38を示し、(2)オフセットは第3パケットが書き込まれた第1ワード40を示しそして、そして(3)読み出しポインタは第1パケットが書き込まれた第1ブロック38を示す。メモリ構造の第1エントリは、(1)第1パケットが書き込まれた第1ワード40を示すオフセットと、(2)第2パケットが書き込まれた第1ブロック38を示すポインタを有する。メモリ構造の第2エントリは、(1)第2パケットが書き込まれた第1ワード40を示すオフセットと、(2)第3パケットが書き込まれた第1ブロック38を示すポインタを有する。
ポートモジュール28は、読み出しポインタと書き込みポインタを比較しそして、比較から、出力キューに1より多くのパケットが存在することを決定する。ポートモジュール28はそして、ストリームメモリ30から読み出すべき次のパケットを決定するのに読み出しポインタを使用する。読み出しポインタは、ポートモジュール28へ第1パケットの第1ブロック38を示し、そして、出力キューに1より多くのパケットがあるので、ポートモジュール28は第1パケットが書き込まれた第1ワード40を示す第1エントリのオフセットにアクセスする。ポートモジュール28は、そして、第1パケットが書き込まれた第1ブロック38で開始する、第1エントリのオフセットを使用して、ストリームメモリ30から第1パケットを読み出す。第1パケットが1より多くのブロック38へ書き込まれた場合には、ポートモジュール28は、上述のように、メモリから第1パケットを読み出すためにタグメモリ32内のリンクされたリストを使用できる。
ポートモジュール28はストリームメモリ30から第1パケットを読み出しながら、ポートモジュール28は、第1エントリのポインタを読み出しポインタへコピーし、そして、読み出しポインタを書き込みポインタを比較し、そして、比較から、出力キューに1つより多くのパケットが存在することを決定する。ポートモジュール28は、そして、ストリームメモリ30から読み出す次のパケットを決定するために読み出しポインタを使用する。読み出しポインタは、ポートモジュール28に第2パケットの第1ブロック38を示し、そして、出力キューに1つより多くのパケットが存在するので、ポートモジュール28は、第2パケットが書き込まれた第1ワード40を示す第2エントリ内のオフセットにアクセスする。ポートモジュール28がストリームメモリ30からの第1パケットの読み出しを終了したときに、ポートモジュール28は、第2パケットが書き込まれた第1ブロック38から開始する、第2エントリのオフセットを使用して、ストリームメモリ30から第2パケットを読み出す。第2パケットが1より多くのブロック38に書き込まれた場合には、ポートモジュール28は、上述のように、メモリから第2パケットを読み出すために、タグメモリ32のリンクされたリストを使用できる。
ポートモジュール28がストリームメモリ30から第2パケットを読み出している間に、ポートモジュール28は、第2エントリ内のポインタを読み出しポインタへコピーし、読み出しポインタを書き込みポインタと比較し、そして、比較から、1つのパケットのみが出力キューにあることを決定する。ポートモジュール28は、ストリームメモリ30から読み出す次のパケットを決定するために読み出しポインタを使用する。読み出しポインタは、ポートモジュール28に第2パケットの第3ブロック38を示し、そして、1つのパケットのみが出力キューにあるので、ポートモジュール28は、第3パケットが書き込まれた第1ワード40を示すレジスタのオフセットにアクセスする。ポートモジュール28が、ストリームメモリ30からの第2パケットの読み出しを終了したときに、ポートモジュール28は、第3パケットが書き込まれた第1ブロック38で開始する、レジスタ内のオフセットを使用して、ストリームメモリ30から第3パケットを読み出す。第3パケットが1つより多くのブロック38に書き込まれた場合には、ポートモジュール28は、上述のように、メモリから、第3パケットを読み出すためにタグメモリ32のリンクされたリストを使用できる。
ポートモジュール28が、1つより多くの出力キューを有する場合には、出力キューの間の仲裁(アービトレーション)のためにアルゴリズムが使用される。複数の出力キューの間の仲裁は、ストリームメモリ30から読み出す次のパケットを決定するのに使用する次の出力キューを決定することを含むことが可能である。複数の出力キューの間の仲裁は、ストリームメモリ30から読み出す次のパケットを決定するために第2出力キューを使用する前に、ストリームメモリ30から読み出す第1出力キュー内に幾つのパケットがあるかを決定することも含むことが可能である。本発明は、複数の出力キュー間の仲裁のために適するアルゴリズムを考慮する。例であり及び限定するのではなく、ポートモジュール28の複数の出力キューの間の仲裁のためのアルゴリズムに従って、ポートモジュール28は、一連のラウンドで空ではない出力キューにアクセスする。1ラウンド内では、ポートモジュール28は、連続して予め定められた順序で出力キューをアクセスし、そして、ポートモジュール28が出力キューをアクセスするときに、ストリームメモリ30からの出力キュー内の1つ又はそれ以上のパケットを読む。ポートモジュール28が1ラウンドで出力キューから読み出すパケットの数は、ポートモジュール28が、同じラウンドで、ポートモジュール28の1つ又はそれ以上の他の出力キューの各々から読み出すパケットの数の同じであるか又は異なることが可能である。特定の実施例では、1ラウンドで出力キューから読み出され得るパケットの数は、データの量を定義する量値に基づいており、それに従って、より小さなパケットが出力キュー内にある場合には出力キューからより多くのパケットが読み出せ、そして、より大きなパケットが出力キュー内にある場合には出力キューからより少ないパケットが読み出せ、これは、ポートモジュール28の出力リンクの公平な共有を容易にする。
図5は、高速交換環境で共有されたメモリ資源を管理する例示の方法を示す。この方法は、ステップ100で開始し、ポートモジュール28は入力パケットを受信する。ステップ102で、ポートモジュール28は、パケットをストリームメモリ30へ書き込むために十分なクレジットが有効かどうかを決定する。ステップ104で、パケットをストリームメモリ30へ書き込むために十分なクレジットが有効でない場合には、この方法はステップ106へ進む。ステップ106で、ポートモジュール28は、パケットを入力バッファに書き込みそして、パケットをストリームメモリ30へ書き込むために十分なクレジットがポートモジュール28へ有効になるまで待つ。ステップ104で、パケットをストリームメモリ30へ書き込むのに十分なクレジットが有効である場合には、この方法はステップ108へ進む。ステップ108では、ポートモジュール28は、第1ブロック38に書き込む。ステップ110で、ポートモジュール28は、ルーティングモジュール36へ、第1ブロック38のアドレス、オフセット及び、ポートモジュール28が1つ又はそれ以上の指定されたポートモジュール28を識別するために使用するパケットのヘッダからの情報を通信する。ルーティングモジュール36は、第1ブロック38のアドレスとオフセットを指定されたポートモジュール28へ通信する。ステップ112で、ポートモジュール28は、ある量だけ第1カウンタを減じる。ポートモジュール28は、ポートモジュール28に有効なクレジットの数を監視するために第1カウンタを使用できる。ステップ114で、ポートモジュール28はポートモジュール28がクレジットを使用したことを中央エージェント34に通知する。ステップ116で、中央エージェント34は、ある量だけ第2カウンタを減じそして、ある量だけ第3カウンタを増加する。中央エージェント34は、ポートモジュール28に有効なクレジットの数を監視するために第2カウンタを使用しそして、ポートモジュール28に使用されているブロック38の数を監視するために第3カウンタを使用する。ステップ118で、中央エージェント34は、ポートモジュール28により使用されているブロック38の数が適用可能な限度に合うか又は超えているかどうかを決定する。
ステップ120で、ポートモジュール28により使用されているブロック38の数が適用可能な限度に合わないか又は超えていない場合には、方法はステップ122に進む。ステップ122では、中央エージェント34は、ポートモジュール28が使用したクレジットを置き換えるために、ブロック38に対応するクレジットを、ポートモジュール28に割当てる。ステップ124では、中央エージェント34は、ある量だけ第2カウンタを増加する。ステップ126で、ポートモジュール28はブロック38に対応するタグメモリ32内のエントリをタグメモリ32内のリンクされたリストに加える。ポートモジュール28は、書き込むべき次のブロック38を識別するために、リンクされたリストを使用できる。ステップ128で、ポートモジュール28はある量だけ第1カウンタを増加する。ステップ120に戻ると、ポートモジュール28により使用されているブロック38の数は適用可能な限度に合うか又は超えている場合には、方法はステップ130へ進む。
ステップ130では、ポートモジュール28は、全体の入力パケットがストリームメモリ30に書き込まれたかどうかを決定する。ステップ132で、全体の入力パケットがストリームメモリ30に書き込まれた場合には、この方法は終了する。ステップ132で、全体の入力パケットがストリームメモリ30に書き込まれていない場合には、方法はステップ134に進む。ステップ134では、ポートモジュール28はリンクされたリストを使用して、書き込むべき次のブロック38を識別する。ステップ136で、ポートモジュール28が次のブロック38へ書き込む。ステップ138で、ポートモジュール28は、ある量だけ第1カウンタを減ずる。ステップ140で、ポートモジュール28は、ポートモジュール28がクレジットを使用したことを中央エージェント34に通知する。ステップ142で、中央エージェント34はある量だけ第2カウンタを減じそして、ある量だけ第3カウンタを増加する。ステップ144で、中央エージェント34は、ポートモジュール28により使用されているブロック38の数が適用可能な限度に合うか又は超えているかどうかを決定する。
ステップ146で、ポートモジュール28により使用されているブロック38の数が適用可能な限度に合わないか又は超えていない場合には、方法はステップ148に進む。ステップ148では、中央エージェント34は、ポートモジュール28が使用したクレジットを置き換えるために、ブロック38に対応するクレジットを、ポートモジュール28に割当てる。ステップ150では、中央エージェント34は、ある量だけ第2カウンタを増加する。ステップ152で、ポートモジュール28はブロック38に対応するタグメモリ32内のエントリをタグメモリ32内のリンクされたリストに加える。ステップ154で、ポートモジュール28はある量だけ第1カウンタを増加する。ステップ146に戻ると、ポートモジュール28により使用されているブロック38の数は適用可能な限度に合うか又は超えている場合には、方法はステップ130へ進む。図5に示された方法の特定のステップが特定の順序で発生するとして記載され及び説明されたが、本発明は、任意の適する順序で発生する上述の方法の任意の提起するステップを考慮する。
図6は、高速交換環境で共有されたメモリ資源を管理する他の例示の方法を示す。この方法はステップ200で開始し、ポートモジュール28は、ルーティングモジュール36からパケットが書き込まれた第1ブロック38のアドレスとオフセットを受信する。ポートモジュール28は、そのパケットの指定されたポートモジュール28である。ステップ202で、ポートモジュール28は、第1ブロック38のアドレスとオフセットを使用して第1ブロック38から読み出す。上述のように、ポートモジュール28は、全体のパケットがストリームメモリ30に書き込まれる前に、ストリームメモリ30からパケットの読み出しを開始する。ステップ204で、ポートモジュール28は、中央エージェント34に、第2ポートモジュール28が第1ブロック38から読み出したことを通知する。ステップ206で、中央エージェント34は第1ブロック38に対応するタグメモリ32内のエントリを、タグメモリ32内の第1のリンクされたリストに加える。中央エージェント34はポートモジュール28に割当てるために次のクレジットを識別するために第1のリンクされたリストを使用できる。上述のように、特定の実施例では、中央エージェント34は、クレジットに対応するブロック38に書き込まれたパケットの全ての指定されたポートモジュール28がブロック38から読み出すまでは、クレジットのプールにクレジットを戻さない。ステップ208では、中央エージェント34はある量だけカウンタを減じる。中央エージェント34は、パケットがストリームメモリ30に書き込まれたポートモジュール28により使用されているブロック38の数を監視するためにカウンタを使用する。ステップ210では、ポートモジュール28は、第1ブロック38は、パケットが書き込まれた最後のブロック38であるかどうかを決定する。ステップ212では、第1ブロック38がパケットが書き込まれた最後のブロック38である場合には、この方法は終了する。
ステップ212で、第1ブロック38がパケットが書き込まれた最後のブロック38でない場合には、ステップ214へ進む。ステップ214で、ポートモジュール28は、タグメモリ32内の第2のリンクされたリストを使用して、パケットが書き込まれた次のブロック38からを読む。第2のリンクされたリストも、、パケットが書き込まれたポートモジュール28により、書き込むべき次のブロック38を決定するために使用されることが可能である。ステップ216で、ポートモジュール28は、第2ポートモジュール28が次のブロック38から読み出したことを中央エージェント34に通知する。ステップ218では、中央エージェント34は、次のブロック38に対応するタグメモリ32内のエントリを、第1のリンクされたリストに加える。ステップ220では、中央エージェント34はある量だけカウンタを減じる。ステップ222で、ポートモジュール28は、次のブロック38はパケットが書き込まれた最後のブロック38であるかどうかを決定する。ステップ224で、次のブロック38はパケットが書き込まれた最後のブロック38ではない場合には、この方法はステップ214に戻る。ステップ224で、次のブロック38はパケットが書き込まれた最後のブロック38である場合には、この方法は終了する。図6に示された方法の特定のステップが特定の順序で発生するとして記載され及び説明されたが、本発明は、任意の適する順序で発生する上述の方法の任意の提起するステップを考慮する。
本発明を幾つかの実施例で説明したが、種々の変更、代用、変形、代替及び修正が、当業者には暗示され、本発明は、添付の請求項の精神と範囲内に含まれる、そのような全ての変更、代用、変形、代替及び修正を包含することを意図している。
(付記)
(付記1)
高速交換環境で共有されたメモリ資源を管理するシステムであって、
複数のクレジットに対応する複数のブロックに論理的に分割されるデータメモリを有し、
中央エージェントを有し、前記中央エージェントは、
1つ又はそれ以上のクレジットを有する利用できるクレジットのプールを維持し、
クレジットのプールから入力ポートへクレジットを割当て、割当てられたクレジットは対応する1つのブロックが前記入力ポートに有効であることを示し、
複数の入力ポートを有し、前記複数の入力ポートの各々は、
中央エージェントから受信された割当てられたクレジットを追跡し、
パケットを受信し、
パケットをデータメモリに書き込むために十分な割当てられたクレジットが有効かどうかを決定し、
十分な割当てられたクレジットが有効である場合には、有効な1つ又はそれ以上の割当てられたクレジットに対応する1つ又はそれ以上のブロックにパケットを書き込み、
複数の出力ポートを有し、前記複数の出力ポートの各々は、
ブロックから読み出し、
読み出したブロックに対応するクレジットをクレジットのプールに戻す、システム。
(付記2)
出力ポートは、前記出力ポートがブロックから読み出したことを中央エージェントに通知することにより、クレジットのプールへ、読み出したブロックに対応するクレジットを戻すように動作し、
前記中央エージェントは、前記出力ポートがブロックから読み出したことを中央エージェントに通知する出力ポートに応じて、クレジットをクレジットのプールへ戻すように動作する、付記1に記載のシステム。
(付記3)
クレジットは、前記ブロックへ書き込まれたパケットについての指定された出力ポートである全ての出力ポートが前記ブロックから読み出した場合にのみ、クレジットのプールに戻される、付記1に記載のシステム。
(付記4)
入力ポートは、パケットの最大サイズに従って、パケットをデータメモリに書き込むために十分なクレジットが有効かどうかを決定するように動作する、付記1に記載のシステム。
(付記5)
前記システムは、各々がデータメモリのブロックに対応する複数のエントリを有するタグメモリを有し、第1エントリは第2エントリへのポインタを有するように動作し、その結果リンクされたリストとなり、
前記クレジットのプールは、前記タグメモリ内に第1のリンクされたリストを有し、第1のリンクされたリストは、各々が、クレジットのプール内にあるクレジットに対応するブロックに対応する1つ又はそれ以上のエントリを有し、
前記中央エージェントは、第1のリンクされたリストを使用して、入力ポートに割当てる次のクレジットを決定するように動作し、
入力ポートは、タグメモリ内の第2のリンクされたリストを使用して書き込むための次のブロックを決定するように動作し、第2のリンクされたリストは、各々が、入力ポートに有効なクレジットに対応するブロックに対応するエントリを有する、付記1に記載のシステム。
(付記6)
入力ポートは、データメモリにパケットを書き込むために、十分な割当てられたクレジットが有効でない場合には、入力バッファにパケットを書き込む、付記1に記載のシステム。
(付記7)
入力ポートは、データメモリにパケットの第1部分のみを書き込むために、十分な割当てられたクレジットが有効である場合には、
入力ポートに有効である1つ又はそれ以上のクレジットに対応する1つ又はそれ以上のブロックにパケットの第1部分を書き込み、
パケットの第2部分を入力バッファに書き込む、付記1に記載のシステム。
(付記8)
中央エージェントは、入力ポートに有効なクレジットの数が、適用可能な限度以下の場合にのみ、入力ポートにクレジットを割り当てるように動作する、付記1に記載のシステム。
(付記9)
前記システムは単一の集積回路(IC)で具体化される、付記1に記載のシステム。
(付記10)
前記高速交換環境は、イーサネット(登録商標)交換環境、INFINIBAND交換環境、3GIO交換環境、HYPERTRANSPORT交換環境、RAPID IO交換環境、又は、専用のバックプレーン交換環境である、付記1に記載のシステム。
(付記11)
高速交換環境で共有されたメモリ資源を管理する方法であって、
中央エージェントで、
データメモリの複数のブロックに対応する1つ又はそれ以上の複数のクレジットを有する有効なクレジットのプールを維持し、
クレジットのプールから入力ポートへクレジットを割当て、割当てられたクレジットは対応する1つのブロックが前記入力ポートに有効であることを示し、
複数の入力ポートの1つで、
中央エージェントから受信された割当てられたクレジットを追跡し、
パケットを受信し、
パケットをデータメモリに書き込むために十分な割当てられたクレジットが有効かどうかを決定し、
十分な割当てられたクレジットが有効である場合には、有効な1つ又はそれ以上の割当てられたクレジットに対応する1つ又はそれ以上のブロックにパケットを書き込み、
複数の出力ポートの1つで、
ブロックから読み出し、
読み出したブロックに対応するクレジットをクレジットのプールに戻す、方法。
(付記12)
読み出したブロックに対応するクレジットをクレジットのプールに戻すことは、前記出力ポートがブロックから読み出したことを中央エージェントに通知しそして、中央エージェントは、前記出力ポートがブロックから読み出したことを中央エージェントに通知する出力ポートに応じて、クレジットをクレジットのプールへ戻す、ことを含む、付記11に記載の方法。
(付記13)
クレジットは、前記ブロックへ書き込まれたパケットについての指定された出力ポートである全ての出力ポートが前記ブロックから読み出した場合にのみ、クレジットのプールに戻される、付記11に記載の方法。
(付記14)
パケットをデータメモリに書き込むために十分な割当てられたクレジットが有効かどうかを決定することは、パケットの最大サイズに従って、パケットをデータメモリに書き込むために十分なクレジットが有効かどうかを決定することを含む、付記11に記載の方法。
(付記15)
前記クレジットのプールは、タグメモリ内に第1のリンクされたリストを有し、前記タグメモリは、各々がデータメモリのブロックに対応する複数のエントリを有し、第1エントリは第2エントリへのポインタを有するように動作し、その結果リンクされたリストとなり、前記第1のリンクされたリストは、各々が、クレジットのプール内にあるクレジットに対応するブロックに対応する1つ又はそれ以上のエントリを有し、
クレジットをクレジットのプールに戻すことは、第1のリンクされたリストに、クレジットに対応するブロックに対応するタグメモリ内のエントリを加えることを含み、そして、
中央エージェントで、第1のリンクされたリストを使用して、入力ポートに割当てる次のクレジットを決定し、
入力ポートで、タグメモリ内の第2のリンクされたリストを使用して書き込むための次のブロックを決定し、第2のリンクされたリストは、各々が、入力ポートに有効なクレジットに対応するブロックに対応するタグメモリ内のエントリを有する、
付記11に記載の方法。
(付記16)
入力ポートで、データメモリにパケットを書き込むために、十分な割当てられたクレジットが有効でない場合には、入力バッファにパケットを書き込む、付記11に記載の方法。
(付記17)
入力ポートで、データメモリにパケットの第1部分のみを書き込むために、十分な割当てられたクレジットが有効である場合には、
入力ポートに有効である1つ又はそれ以上のクレジットに対応する1つ又はそれ以上のブロックにパケットの第1部分を書き込み、
パケットの第2部分を入力バッファに書き込む、付記11に記載の方法。
(付記18)
中央エージェントで、入力ポートに有効なクレジットの数が、適用可能な限度以下の場合にのみ、入力ポートにクレジットを割り当てる、付記11に記載の方法。
(付記19)
前記方法は単一の集積回路(IC)で実行される、付記11に記載の方法。
(付記20)
前記高速交換環境は、イーサネット(登録商標)交換環境、INFINIBAND交換環境、3GIO交換環境、HYPERTRANSPORT交換環境、RAPID IO交換環境、又は、専用のバックプレーン交換環境である、付記11に記載の方法。
(付記21)
イーサネット(登録商標)交換環境、INFINIBAND交換環境、3GIO交換環境、HYPERTRANSPORT交換環境、RAPID IO交換環境、又は、専用のバックプレーン交換環境を有する、高速交換環境で共有されたメモリ資源を管理するシステムであって、前記システムは単一の集積回路(IC)で具体化され、且つ、
複数のクレジットに対応する複数のブロックに論理的に分割されるデータメモリを有し、
各々がデータメモリのブロックに対応する複数のエントリを有するタグメモリを有し、第1エントリは第2エントリへのポインタを有するように動作し、その結果リンクされたリストとなり、
中央エージェントを有し、前記中央エージェントは、
タグメモリ内に第1のリンクされたリストを有する有効なクレジットのプールを維持し、第1のリンクされたリストは各々がクレジットに対応するブロックに対応する1つ又はそれ以上のエントリを有し、
入力ポートに有効なクレジットの数が適用可能な限度以下の場合には、クレジットのプールから入力ポートへクレジットを割当て、割当てられたクレジットは対応する1つのブロックが前記入力ポートに有効であることを示し、
前記出力ポートがクレジットに対応するブロックから読み出したことを中央エージェントに通知する出力ポートに応じて、ブロックに書き込まれたパケットについて指定された出力ポートである全ての出力ポートが前記ブロックから読み出した場合には、クレジットのプールへクレジットを戻し、
第1のリンクされたリストを使用して、入力ポートに割当てられる次のクレジットを決定し、
複数の入力ポートを有し、前記複数の入力ポートの各々は、
中央エージェントから受信された割当てられたクレジットを追跡し、
パケットを受信し、
パケットの最大サイズに従って、パケットをデータメモリに書き込むために十分な割当てられたクレジットが有効かどうかを決定し、
十分な割当てられたクレジットが有効である場合には、有効な1つ又はそれ以上の割当てられたクレジットに対応する1つ又はそれ以上のブロックにパケットを書き込み、
前記タグメモリ内の第2のリンクされたリストを使用して書き込むべき次のブロックを決定し、前記第2のリンクされたリストは、各々が入力ポートに有効なクレジットに対応するブロックに対応するエントリを有し、
複数の出力ポートを有し、前記複数の出力ポートの各々は、
ブロックから読み出し、
出力ポートがブロックから読み出したことを中央エージェントへ通知する、システム。
(付記22)
高速交換環境で共有されたメモリ資源を管理するシステムであって、
データメモリの複数のブロックに対応する1つ又はそれ以上の複数のクレジットを有する有効なクレジットのプールを維持し、且つ、
クレジットのプールから入力ポートへクレジットを割当て、割当てられたクレジットは対応する1つのブロックが前記入力ポートに有効であることを示す、手段と、
割当てられたクレジットを追跡し、
パケットを受信し、
パケットをデータメモリに書き込むために十分な割当てられたクレジットが有効かどうかを決定し、且つ、
十分な割当てられたクレジットが有効である場合には、有効な1つ又はそれ以上の割当てられたクレジットに対応する1つ又はそれ以上のブロックにパケットを書き込む、手段と、
ブロックから読み出し、及び、
読み出したブロックに対応するクレジットをクレジットのプールに戻す、手段とを有する、システム。
(付記23)
高速交換環境で共有されたメモリ資源を管理する論理であって、前記論理は媒体で具体化され、且つ、実行されたときに、
中央エージェントで、
データメモリの複数のブロックに対応する1つ又はそれ以上の複数のクレジットを有する有効なクレジットのプールを維持し、
クレジットのプールから入力ポートへクレジットを割当て、割当てられたクレジットは対応する1つのブロックが前記入力ポートに有効であることを示し、
複数の入力ポートの1つで、
中央エージェントから受信された割当てられたクレジットを追跡し、
パケットを受信し、
パケットをデータメモリに書き込むために十分な割当てられたクレジットが有効かどうかを決定し、
十分な割当てられたクレジットが有効である場合には、有効な1つ又はそれ以上の割当てられたクレジットに対応する1つ又はそれ以上のブロックにパケットを書き込み、
複数の出力ポートの1つで、
ブロックから読み出し、
読み出したブロックに対応するクレジットをクレジットのプールに戻す、論理。
例示のシステムエリアネットワークを示す図である。 システムエリアネットワークの例示のスイッチを示す図である。 スイッチの例示のスイッチコアを示す図である。 論理的にブロックに分割されたスイッチコアの例示のストリームメモリを示す図である。 高速交換環境で共有されたメモリ資源を管理する例示の方法を示す。 高速交換環境で共有されたメモリ資源を管理する例示の方法を示す。 高速交換環境で共有されたメモリ資源を管理する他の例示の方法を示す。
符号の説明
10 システムエリアネットワーク
12 相互接続
14 サーバシステム
16 記憶システム
18 ネットワークシステム
20 ルーティングシステム
22 スイッチ
24 ポート
26 スイッチコア
28 ポートモジュール
30 ストリームメモリ
32 タグメモリ
34 中央エージェント
36 ルーティングモジュール
38 ブロック
40 ワード

Claims (9)

  1. 高速交換環境で共有されたメモリ資源を管理するシステムであって、
    複数のクレジットに対応する複数のブロックに論理的に分割されるデータメモリを有し、
    中央エージェントを有し、前記中央エージェントは、
    利用できるクレジットのプールを維持し、
    クレジットの数を示すカウンタが閾値以下であれば、クレジットのプールから入力ポートへクレジットを一定量割当て、割当てられたクレジットは対応する1つのブロックが前記入力ポートに有効であることを示し、
    前記閾値は、前記入力ポートの数によって求まる動的な値であり、
    複数の前記入力ポートを有し、前記複数の入力ポートの各々は、
    前記中央エージェントから受信して割当てられたクレジットを追跡し、
    パケットを受信し、
    パケットをデータメモリに書き込むために十分なクレジットが割当てられているかどうかを決定し、
    十分に割当てられている場合には、1つ以上の割当てられたクレジットに対応する1つ以上のブロックにパケットを書き込み、
    複数の出力ポートを有し、前記複数の出力ポートの各々は、
    ブロックから読み出し、
    読み出したブロックに対応するクレジットを前記クレジットのプールに戻す、システム。
  2. 出力ポートは、前記出力ポートがブロックから読み出したことを中央エージェントに通知することにより、クレジットのプールへ、読み出したブロックに対応するクレジットを戻すように動作し、
    前記中央エージェントは、前記出力ポートがブロックから読み出したことを中央エージェントに通知する出力ポートに応じて、クレジットをクレジットのプールへ戻すように動作する、請求項1に記載のシステム。
  3. クレジットは、前記ブロックへ書き込まれたパケットについての指定された出力ポートである全ての出力ポートが前記ブロックから読み出した場合にのみ、クレジットのプールに戻される、請求項1に記載のシステム。
  4. 入力ポートは、パケットの最大サイズに従って、パケットをデータメモリに書き込むために十分なクレジットが有効かどうかを決定するように動作する、請求項1に記載のシステム。
  5. 前記システムは、各々がデータメモリのブロックに対応する複数のエントリを有するタグメモリを有し、第1エントリは第2エントリへのポインタを有するように動作し、その結果リンクされたリストとなり、
    前記クレジットのプールは、前記タグメモリ内に第1のリンクされたリストを有し、第1のリンクされたリストは、各々が、クレジットのプール内にあるクレジットに対応するブロックに対応する1つ以上のエントリを有し、
    前記中央エージェントは、第1のリンクされたリストを使用して、入力ポートに割当てる次のクレジットを決定するように動作し、
    入力ポートは、タグメモリ内の第2のリンクされたリストを使用して書き込むための次のブロックを決定するように動作し、第2のリンクされたリストは、各々が、入力ポートに有効なクレジットに対応するブロックに対応するエントリを有する、請求項1に記載のシステム。
  6. 入力ポートは、データメモリにパケットを書き込むために、十分な割当てられたクレジットが有効でない場合には、入力バッファにパケットを書き込む、請求項1に記載のシステム。
  7. 高速交換環境で共有されたメモリ資源を管理する方法であって、
    中央エージェントで、
    データメモリの複数のブロックに対応する利用できるクレジットのプールを維持し、
    クレジットの数を示すカウンタが閾値以下であれば、クレジットのプールから入力ポートへクレジットを一定量割当て、割当てられたクレジットは対応する1つのブロックが前記入力ポートに有効であることを示し、
    前記閾値は、前記入力ポートの数によって求まる動的な値であり、
    複数の前記入力ポートの1つで、
    前記中央エージェントから受信して割当てられたクレジットを追跡し、
    パケットを受信し、
    パケットをデータメモリに書き込むために十分なクレジットが割当てられているかどうかを決定し、
    十分に割当てられている場合には、1つ以上の割当てられたクレジットに対応する1つ以上のブロックにパケットを書き込み、
    複数の出力ポートの1つで、
    ブロックから読み出し、
    読み出したブロックに対応するクレジットを前記クレジットのプールに戻す、方法。
  8. イーサネット(登録商標)交換環境、INFINIBAND交換環境、3GIO交換環境、HYPERTRANSPORT交換環境、RAPID IO交換環境、又は、専用のバックプレーン交換環境を有する、高速交換環境で共有されたメモリ資源を管理するシステムであって、前記システムは単一の集積回路(IC)で具体化され、且つ、
    複数のクレジットに対応する複数のブロックに論理的に分割されるデータメモリを有し、
    各々がデータメモリのブロックに対応する複数のエントリを有するタグメモリを有し、第1エントリは第2エントリへのポインタを有するように動作し、その結果リンクされたリストとなり、
    中央エージェントを有し、前記中央エージェントは、
    タグメモリ内に第1のリンクされたリストを有する利用できるクレジットのプールを維持し、第1のリンクされたリストは各々がクレジットに対応するブロックに対応する1つ以上のエントリを有し、
    クレジットの数を示すカウンタが閾値以下であれば、クレジットのプールから入力ポートへクレジットを一定量割当て、割当てられたクレジットは対応する1つのブロックが前記入力ポートに有効であることを示し、
    前記閾値は、前記入力ポートの数によって求まる動的な値であり、
    前記出力ポートがクレジットに対応するブロックから読み出したことを中央エージェントに通知する出力ポートに応じて、ブロックに書き込まれたパケットについて指定された出力ポートである全ての出力ポートが前記ブロックから読み出した場合には、前記クレジットのプールへクレジットを戻し、
    第1のリンクされたリストを使用して、入力ポートに割当てられる次のクレジットを決定し、
    複数の入力ポートを有し、前記複数の入力ポートの各々は、
    前記中央エージェントから受信して割当てられたクレジットを追跡し、
    パケットを受信し、
    パケットの最大サイズに従って、パケットをデータメモリに書き込むために十分なクレジットが割当てられているかどうかを決定し、
    十分に割当てられている場合には、1つ以上の割当てられたクレジットに対応する1つ以上のブロックにパケットを書き込み、
    前記タグメモリ内の第2のリンクされたリストを使用して書き込むべき次のブロックを決定し、前記第2のリンクされたリストは、各々が入力ポートに有効なクレジットに対応するブロックに対応するエントリを有し、
    複数の出力ポートを有し、前記複数の出力ポートの各々は、
    ブロックから読み出し、
    出力ポートがブロックから読み出したことを前記中央エージェントへ通知する、システム。
  9. 高速交換環境で共有されたメモリ資源を管理するシステムであって、
    データメモリの複数のブロックに対応する利用できるクレジットのプールを維持し、且つ、
    クレジットの数を示すカウンタが、前記入力ポートの数によって求まる動的な値である閾値以下であれば、クレジットのプールから入力ポートへクレジットを一定量割当て、割当てられたクレジットは対応する1つのブロックが前記入力ポートに有効であることを示す、手段と、
    割当てられたクレジットを追跡し、
    パケットを受信し、
    パケットをデータメモリに書き込むために十分なクレジットが割当てられているかどうかを決定し、且つ、
    十分に割当てられている場合には、1つ以上の割当てられたクレジットに対応する1つ以上のブロックにパケットを書き込む、手段と、
    ブロックから読み出し、及び、
    読み出したブロックに対応するクレジットを前記クレジットのプールに戻す、手段とを有する、システム。
JP2004030782A 2003-02-07 2004-02-06 高速交換環境で共有されたメモリ資源を管理するシステム、方法及び論理 Expired - Fee Related JP4446757B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/360,085 US7650413B2 (en) 2003-02-07 2003-02-07 Managing shared memory resources in a high-speed switching environment

Publications (2)

Publication Number Publication Date
JP2004242333A JP2004242333A (ja) 2004-08-26
JP4446757B2 true JP4446757B2 (ja) 2010-04-07

Family

ID=32823937

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004030782A Expired - Fee Related JP4446757B2 (ja) 2003-02-07 2004-02-06 高速交換環境で共有されたメモリ資源を管理するシステム、方法及び論理

Country Status (2)

Country Link
US (1) US7650413B2 (ja)
JP (1) JP4446757B2 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7587485B1 (en) * 2002-09-19 2009-09-08 Foundry Networks, Inc. System and method for supplicant based accounting and access
US8050180B2 (en) * 2003-10-31 2011-11-01 Brocade Communications Systems, Inc. Network path tracing method
JP4778199B2 (ja) * 2004-02-26 2011-09-21 富士通株式会社 データ転送装置及びデータ転送方法
US7814280B2 (en) * 2005-01-12 2010-10-12 Fulcrum Microsystems Inc. Shared-memory switch fabric architecture
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
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
JP5132451B2 (ja) * 2008-07-02 2013-01-30 株式会社リコー 画像形成装置
US8370557B2 (en) * 2008-12-19 2013-02-05 Intel Corporation Pseudo dual-port SRAM and a shared memory switch using multiple memory banks and a sideband memory
JP5748287B2 (ja) * 2011-12-27 2015-07-15 日本電信電話株式会社 パケットバッファ装置およびパケットバッファ制御方法
US9014013B2 (en) 2012-03-16 2015-04-21 Brocade Communications Systems, Inc. Packet tracing through control and data plane operations using SNMP trap commands
US9088496B2 (en) 2012-03-16 2015-07-21 Brocade Communications Systems, Inc. Packet tracing through control and data plane operations
US10853077B2 (en) * 2015-08-26 2020-12-01 Huawei Technologies Co., Ltd. Handling Instruction Data and Shared resources in a Processor Having an Architecture Including a Pre-Execution Pipeline and a Resource and a Resource Tracker Circuit Based on Credit Availability
US11221853B2 (en) * 2015-08-26 2022-01-11 Huawei Technologies Co., Ltd. Method of dispatching instruction data when a number of available resource credits meets a resource requirement
US9785359B2 (en) * 2016-02-26 2017-10-10 Intel Corporation Sending packets using optimized PIO write sequences without sfences and out of order credit returns
CN107426103B (zh) * 2017-09-13 2020-07-31 北京翼辉信息技术有限公司 RapidIO网络与以太网之间的数据传输方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3606941B2 (ja) * 1995-03-23 2005-01-05 株式会社東芝 フロー制御装置及びフロー制御方法
US6188690B1 (en) * 1996-12-12 2001-02-13 Pmc-Sierra, Inc. Method and apparatus for high speed, scalable communication system
US6021132A (en) 1997-06-30 2000-02-01 Sun Microsystems, Inc. Shared memory management in a switched network element
US7346063B1 (en) * 1998-07-08 2008-03-18 Broadcom Corporation Memory management unit for a network switch
US6707818B1 (en) * 1999-03-17 2004-03-16 Broadcom Corporation Network switch memory interface configuration
US6922408B2 (en) * 2000-01-10 2005-07-26 Mellanox Technologies Ltd. Packet communication buffering with dynamic flow control
US7035255B2 (en) * 2000-11-14 2006-04-25 Broadcom Corporation Linked network switch configuration
US6766389B2 (en) * 2001-05-18 2004-07-20 Broadcom Corporation System on a chip for networking
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
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

Also Published As

Publication number Publication date
US20040158636A1 (en) 2004-08-12
JP2004242333A (ja) 2004-08-26
US7650413B2 (en) 2010-01-19

Similar Documents

Publication Publication Date Title
JP4408375B2 (ja) 高速交換環境の不足ラウンドロビンスケジューリングをするシステム、方法及び論理
JP4446757B2 (ja) 高速交換環境で共有されたメモリ資源を管理するシステム、方法及び論理
US7802028B2 (en) Total dynamic sharing of a transaction queue
US7742408B2 (en) System and method for filtering packets in a switching environment
US20070280104A1 (en) System and Method for Managing Forwarding Database Resources in a Switching Environment
US7684424B2 (en) Memory interleaving in a high-speed switching environment
US7826468B2 (en) System and method for bypassing an output queue structure of a switch
US20070268903A1 (en) System and Method for Assigning Packets to Output Queues
JP4833518B2 (ja) 高速交換環境でマルチキャストするシステム、方法及び論理
US20070268926A1 (en) System and Method for Allocating Memory Resources in a Switching Environment
JP4408376B2 (ja) 交換のためにメモリに書き込まれるパケットをキューイングするシステム、方法及び論理
JP2005278175A (ja) 誤り検査方法及び誤り検査システム
US6728790B2 (en) Tagging and arbitration mechanism in an input/output node of a computer system
JP4852138B2 (ja) 高速交換環境でマルチキャスティングするシステム、方法及び論理
JP4408374B2 (ja) 高速交換環境でパケットを交換するシステム、方法及び論理

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070202

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090317

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090508

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090908

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091127

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20091216

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

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

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

Free format text: PAYMENT UNTIL: 20130129

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4446757

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140129

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees