JP4541454B2 - 受信データの関数としてデータの送信の開始を制御するための方法および装置 - Google Patents

受信データの関数としてデータの送信の開始を制御するための方法および装置 Download PDF

Info

Publication number
JP4541454B2
JP4541454B2 JP53581298A JP53581298A JP4541454B2 JP 4541454 B2 JP4541454 B2 JP 4541454B2 JP 53581298 A JP53581298 A JP 53581298A JP 53581298 A JP53581298 A JP 53581298A JP 4541454 B2 JP4541454 B2 JP 4541454B2
Authority
JP
Japan
Prior art keywords
data
frame
port
received
mode
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 - Lifetime
Application number
JP53581298A
Other languages
English (en)
Other versions
JP2001511981A5 (ja
JP2001511981A (ja
Inventor
エグバート,チャンダン
ルナルデュー,トーマス・ジェファーソン
エリムリ,バハディール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2001511981A publication Critical patent/JP2001511981A/ja
Publication of JP2001511981A5 publication Critical patent/JP2001511981A5/ja
Application granted granted Critical
Publication of JP4541454B2 publication Critical patent/JP4541454B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1881Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with schedule organisation, e.g. priority, sequence management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/0213Standardised network management protocols, e.g. simple network management protocol [SNMP]
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9078Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/26Special purpose or proprietary protocols or architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q3/00Selecting arrangements
    • H04Q3/42Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker
    • H04Q3/54Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised
    • H04Q3/545Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised using a stored programme
    • H04Q3/54575Software application
    • H04Q3/54591Supervision, e.g. fault localisation, traffic measurements, avoiding errors, failure recovery, monitoring, statistical analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1863Arrangements for providing special services to substations for broadcast or conference, e.g. multicast comprising mechanisms for improved reliability, e.g. status reports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • H04L12/4645Details on frame tagging
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • H04L12/467Arrangements for supporting untagged frames, e.g. port-based VLANs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/103Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/205Quality of Service based
    • 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/3009Header conversion, routing tables or routing tags
    • 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/3027Output queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/354Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/45Arrangements for providing or supporting expansion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/1316Service observation, testing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13162Fault indication and localisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Description

発明の分野
この発明はデータの受信および送信の分野に関し、特に、デバイスで受信されたデータの転送(送信)の開始を制御するための方法および装置に関する。
背景技術
パケット交換ネットワークのためのネットワークパケットスイッチなどの、データの受信および転送を行なうデバイスの場合、デバイスは種々のレイテンシでデータを転送するように構成され得る。たとえば、デバイスの中には非常に低いレイテンシでデータのフレームといったデータを転送し、フレームがまだ受信されている途中でもデータの転送が開始されるように構成され得る。
低レイテンシの転送方式は、デバイスを介してデータを非常に高速に、たとえばラインレート速度などの速度で転送するが、エラー保護の機能を何ら有さないという欠点がある。なぜなら、フレームがCRC(巡回冗長検査)エラーを含むか、または(たとえば少なくとも64バイトの)適格な長さを有するかを判断する前にデータの送信が開始するからである。
はるかに高いレベルのネットワークエラー保護を提供するためには、デバイスはフレームの転送を開始する前にデータのフレーム全体を受信するように構成され得る。これにより、転送前にデバイスがCRCエラー検査を行ない、フレームのフラグメントを篩にかけることが可能になる。しかしながら、このようにネットワーク保護を高めることは、高いレイテンシという代償を払ってしか達成できない。
システムの中には、受信されるフレームの転送を開始する前に、必ずしもフレーム全体ではなくしきい量のデータを受信するようデバイスを構成することにより、中間のレイテンシおよび制限されたネットワークエラー保護を達成するものがある。これにより、あるサイズ未満のフラグメントの転送が防止されるが、CRCエラー検査は行なわれない。
現在のパケット交換ネットワークでは、複数のポートを有するネットワークスイッチの必要性が高まりつつある。これらのポートは、さまざまなポートに接続された種々の異なった端末局を有し得る。たとえば、データが受信されるさまざまなポートのうちの1つは、低レイテンシで転送されるべき(ビデオデータなどの)データを送出し、低いレベルのネットワークエラー保護を許容し得る。他のポートは、より高いレベルのネットワークエラー保護、したがって高レイテンシで、転送されるべきデータを送出する。しかしながら、前述の方式のうちの1つでマルチポートネットワークスイッチを構成しても、デバイスの複数のポートが保持し得る種々のタイプのトラヒックに適合して、適切なネットワークエラー保護および特定的なタイプのトラヒックに適当なレイテンシが得られることはない。
発明の概要
複数のポートを有するデバイスで受信したデータの転送を開始して、個々のポートによって保持される種々のタイプのトラヒックに適合するよう個々のポートに柔軟性を与えるための方法および構成が必要である。
この必要性および他の必要性は、デバイスで受信したデータの関数として、複数の受信および送信ポートを有するデバイスからのデータの転送の開始を制御するための方法を提供するこの発明によって満たされる。受信ポートの各々にはデバイスからのデータの転送の開始前に独立して1つのモードが指定され、このモードは、その受信ポートにより受信されるべきデータを示す。1組のデータを受信している受信ポートが、その組のデータを受信している間に判別される。その後、その組のデータを受信する受信ポートの指定モードが決定される。その組のデータは、受信ポートにおける指定されたモードおよびその受信ポートで受信されたデータに従って転送される。
この発明の利点は、受信ポートに独立して転送モードが指定されることである。これにより個々のポートがカスタマイズできるようになり、これらのポートが受信したトラヒックの転送が、個々のポートによって担われる特定のタイプのトラヒックに関する所望のレイテンシおよびネットワークエラー保護を選ぶよう選択可能となる。
前述の必要性は、複数の受信および送信ポートを利用するデバイスからのデータの転送を、デバイスで受信したデータの関数として開始するための構成を提供するこの発明の別の実施例によって満たされる。この構成は、データを受信および送信するための複数のポートと、ポートベクタFIFOとを含み、このポートベクタFIFOは、受信した組のデータの、ポートのうちの少なくとも1つからの転送を開始するためにデータ識別子を転送するように構成される。保持領域がポートベクタFIFOによって制御され、この保持領域は、データ識別子を受信し、ポートベクタFIFOによって解放されるまでそのデータ識別子を保持するように構成される。データ識別子を解放することによりデータの転送が開始する。各データ識別子はそのデバイスで受信した各組のデータを一意に識別する。アドレステーブルは、データ識別子と、データ識別子によって識別された組のデータを受信する受信ポートとをストアして関連づける。ポートベクタFIFOは、データ識別子の受信時に、データ識別子によってアドレステーブルにアクセスして、データ識別子によって識別された組のデータを受信する受信ポートを決定し、その受信ポートのモードを決定し、さらにはその受信ポートのモードおよびその受信ポートで受信したデータに従ってデータ識別子を解放する。
この発明の前述および他の特徴、局面および利点は、添付の図面と関連して読まれるとこの発明の以下の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
図1は、この発明の実施例に従って構成されたパケット交換システムのブロック図である。
図2は、この発明の実施例に従って構成され、図1のパケット交換システムに用いられるマルチポートスイッチのブロック図である。
図3は、この発明の実施例に従って構成された、図2のマルチポートスイッチのスイッチサブシステムの概略図である。
図4は、この発明の実施例に従って構成された、図3のスイッチサブシステムの単一の出力キューを示すブロック図である。
図5は、この発明の実施例による第1のタイプの出力キューを詳細に示す図である。
図6は、この発明の実施例による第2のタイプの出力キューを詳細に示す図である。
図7は、この発明の実施例に従って構成された、外部メモリのオーバフロー領域を詳細に示す図である。
図8は、この発明に採用されるリンクトリストデータ構造のブロック図である。
図9は、この発明の実施例によるフレームバッファヘッダフォーマットを概略的に示す図である。
図10は、この発明の実施例に従って構成された、図4のスイッチサブシステムのマルチコピー、リクレームおよびフリーバッファプール領域を詳細に示す図である。
図11は、この発明の実施例に従って構成されたフリーバッファプール構造のブロック図である。
図12は、この発明の実施例に従って構成されたマルチコピーキューのブロック図である。
図13は、この発明の実施例に従って構成されたマルチコピーキャッシュの概略図である。
図14は、この発明の実施例に従って構成された、スイッチサブシステムのバッファマネージャのキュー部およびポートベクタFIFOのブロック図である。
例示的な実施例の詳細な説明
イーサネット(IEEE 802.3)網などのパケット交換ネットワークにおけるスイッチを例に挙げてこの発明を説明する。しかしながら、以下に詳細に説明するように、この発明は他のパケット交換システムおよび一般的な他のタイプのシステムにも適用可能であることが明らかとなるであろう。
図1は、この発明が有利に採用され得る例示的なシステムのブロック図である。例示的なシステム10はイーサネット網などのパケット交換ネットワークである。パケット交換ネットワークは、ネットワークステーション間でのデータパケットの通信を可能にする統合マルチポートスイッチ(IMS)12を含む。ネットワークはたとえば10M\bpsのネットワークデータレートでデータの授受を行なう24個の毎秒10メガビットの速度(M\bps)のネットワークステーション14と、100M\bpsのネットワーク速度でデータパケットの授受を行なう2つの100M\bpsネットワークステーション22といった、種々の構成を有するネットワークステーションを含み得る。したがって、スイッチ12はネットワークステーション14または22から受けたデータパケットをイーサネットプロトコルに基づく適切な宛先に選択的に転送する。
開示される実施例によると、10M\bpsネットワークステーション14は媒体17を介して、かつ半二重イーサネットプロトコルに従って、スイッチ12に対してデータパケットの授受を行なう。イーサネットプロトコルISO/IEC 8802−3(ANSI/IEEE Std. 802.3,1993Ed.)は、すべてのステーション14が等しくネットワークチャネルにアクセスできるようにする半二重媒体アクセス機構を規定する。半二重環境のトラヒックは媒体17と区別されたりまたはそれより優先されることはない。各ステーション14はむしろ、媒体上のトラヒックを認識するために搬送波感知多重アクセス/衝突検出(CSMA/CD)を用いるイーサネットインタフェースカードを含む。媒体上の受信搬送波がデアサートされたことを感知することによりネットワークトラヒックの不在が検出される。送信するデータを有するステーション14はすべて、パケット間ギャップ期間(IPG)として公知である、媒体上の受信搬送波がデアサートされた後、予め定められた時間だけ待機することにより、チャネルにアクセスしようとする。複数のステーション14がネットワーク上に送信するデータを有する場合、ステーションの各々が、媒体上の受信搬送波の、デアサートが感知されたことに応答してIPG期間の後に送信を行なおうとするため、衝突が生じる。したがって、送信ステーションは、別のステーションが同時にデータを送信することにより衝突が生じていないかを判断するために媒体を監視する。衝突が検出されれば、両方のステーションが停止し、ランダムな期間だけ待機し、再度送信を試みる。
100M\bpsネットワークステーション22は好ましくは、提案されているフロー制御によるイーサネット規格IEEE 802.3x全二重−草案(0.3)に従う全二重モードで動作する。全二重環境は各100M\bpsネットワークステーション22とスイッチ12との間に双方向ポイントツーポイント通信リンクを設け、スイッチ12およびそれぞれのステーション22は衝突することなくデータパケットの送受信を同時に行なうことができる。100M\bpsネットワークステーション22の各々は、100ベース−TX、100ベース−T4または100ベース−FXタイプの100M\bps物理(PHY)装置20を介してネットワーク媒体17に結合される。スイッチ12は、物理装置20への接続をもたらす媒体独立インタフェース(MII)24を含む。100M\bpsネットワーク22は他のネットワークへの接続のためのサーバまたはルータとして実現され得る。
図1に示されるように、ネットワーク10は、スイッチ12と10M\bpsステーション14との間で送信されたデータパケットの時分割多重化および時分割非多重化を行なう一連のスイッチトランシーバ26を含む。磁気変成器モジュール19は媒体17上の信号の波形を維持する。スイッチ12は、時分割多重化プロトコルを用いて単一のシリアルノンリターンツーゼロ(NRZ)インタフェース23を介して各スイッチトランシーバ16に対するデータパケットの送受信を行なうトランシーバインタフェース18を含む。スイッチトランシーバ16はシリアルNRZインタフェース23からパケットを受信し、受信されたパケットを非多重化し、ネットワーク媒体17を介して適切なエンドステーション14にそのパケットを出力する。開示される実施例によると、各スイッチトランシーバ16は独立した4つの10M\bpsツイストペアポートを有し、スイッチ12が必要とするPINの数が4分の1に減少するようにするシリアルNRZインタフェースを介する4:1多重化を用いる。
スイッチ12は、意思決定エンジン、切換エンジン、バッファメモリインタフェース、構成/制御/状態レジスタ、管理カウンタ、ならびにネットワークステーション14および12のためのイーサネットポート間でデータパケットの経路制御を行なうためのMAC(媒体アクセス制御)プロトコルインタフェースを含む。スイッチ12はまた、インテリジェントな切換決定を行ない、後に説明するように、外部の管理エンティティに管理情報ベース(MIB)オブジェクトの形式で統計的なネットワーク情報を与えるための優れた機能を有する。スイッチ12はさらに、スイッチ12のチップサイズを最小にするためにパケットデータの外部ストアおよびスイッチ論理を可能にするインタフェースを含む。たとえば、スイッチ12は、受信したフレームデータ、メモリ構造およびMIBカウンタ情報をストアするための外部メモリ36へのアクセスをもたらす同期型ダイナミックRAM(SDRAM)インタフェース34を含む。メモリ36は2Mbまたは4Mbのメモリサイズを有する80、100または120MHz同期型DRAMであってもよい。
スイッチ12はさらに、外部管理エンティティが管理MACインタフェース32によってスイッチ12の全体的な動作を制御できるようにする、管理ポート30を含む。スイッチ12は、PCIホストおよびブリッジ28を介して管理エンティティがアクセスできるようにするPCIインタフェース26をさらに含む。これに代えて、PCIホストおよびブリッジ28が複数のスイッチデバイス12に対する拡張バスとしての役割を果たしてもよい。
スイッチ12は、1つのソースから少なくとも1つの宛先ステーションに受信データパケットを選択的に送信する内部意思決定エンジン(図2)を含む。内部意思決定エンジンには外部ルールチェッカが代用されてもよい。スイッチ12は外部ルールチェッカインタフェース(ERCI)40を含み、これは内部意思決定エンジンの代わりにフレーム転送決定を行なうために外部ルールチェッカ42が用いられるようにする。したがって、フレーム転送決定は、内部切換エンジンまたは外部ルールチェッカ42のいずれかによって行なわれ得る。
スイッチ12は、ポートごとのステータスをクロックに合せて出力しLED外部論理46を駆動する、LEDインタフェース44をさらに含む。LED外部論理46は人間が読取ることができるLEDディスプレイエレメント48を駆動する。発振器38はスイッチ12のシステム機能に40MHzのクロック入力を与える。
図2は、図1の統合マルチポートスイッチ(IMS)12のブロック図である。スイッチ12はそれぞれの10M\bpsネットワークステーション14間で半二重のデータパケットの送受信を行なうための24個の10M\bps媒体アクセス制御(MAC)ポート50(ポート1から24)と、それぞれの100M\bpsネットワークステーション間で全二重のデータパケットの送受信を行なうための2つの100M\bps MACポート53(ポート25および26)とを含む。上述のとおり、管理インタフェース30もまたMAC層プロトコル(ポート0)に従って動作する。MACポート50、53および30の各々は、受信先入れ先出し(FIFO)バッファ52と送信FIFO54とを有する。ネットワークステーションからのデータパケットは対応のMACポートで受信され、対応の受信FIFO52にストアされる。受信されたデータパケットは対応の受信FIFO52から外部メモリインタフェース34に出力されて、外部メモリ36にストアされる。
受信されたパケットのヘッダもまた、内部ルールチェッカ58または外部ルールチェッカインタフェース40のいずれかである、意思決定エンジンに転送され、いずれのMACポートからデータパケットが出力されるかを決定する。具体的には、パケットヘッダは、スイッチ12が内部ルールチェッカ58または外部ルールチェッカ42を用いて動作するよう構成されているか否かに依存して、内部ルールチェッカ58または外部ルールチェッカインタフェース40に送られる。内部ルールチェッカ58および外部ルールチェッカ42は、所与のデータパケットに関する宛先MACポートを決定するための意思決定論理を提供する。したがって、意思決定エンジンは、単一ポート、マルチプルポートまたは全ポート(すなわちブロードキャスト)のいずれかに所与のデータパケットを出力し得る。たとえば、各データパケットにはソースおよび宛先アドレスを有するヘッダが含まれ、意思決定エンジンは宛先アドレスに基づいて適切な出力MACポートを特定する。これに代えて、宛先アドレスは、適切な意思決定エンジンが複数のネットワークステーションに対応するものと特定するバーチャルアドレスに対応してもよい。これに代えて、受信されたデータパケットは、(100M\bpsステーション22のうちの1つのルータを介する)別のネットワークまたは所定のグループのステーションを特定するIEEE 802.1dプロトコルに準拠するVLAN(バーチャルLAN)タグ付フレームを含んでもよい。したがって、内部ルールチェッカ58または外部ルールチェッカ42のいずれかがインタフェース40を介して、バッファメモリ36に一時的にストアされたフレームが単一のMACポートまたは複数のMACポートに出力されるべきかを決定する。
外部ルールチェッカ42を使用することにより、容量の増加、およびフレームが外部メモリに完全にバッファされる前にフレーム転送決定を可能にし、かつスイッチ12がフレームを受信する順からは独立した順で決定が行なわれるようにする、決定キューのうちランダムな順序付け、といった利点がもたらされる。
意思決定エンジン(すなわち内部ルールチェッカ58または外部ルールチェッカ42)は、データパケットを受信すべき各MACポートを特定するポートベクタの形式で転送決定をスイッチサブシステム56に出力する。ルールチェッカからのポートベクタは、外部メモリ36にデータパケットをストアするアドレス場所と、データパケットを受信して送信するためのMACポート(たとえばMACポート0から26)の識別子とを含む。スイッチサブシステム56はポートベクタに特定されたデータパケットを外部メモリインタフェース34を介して外部メモリ36から取出し、取出されたデータパケットを特定されたポートの適切な送信FIFO54に与える。
付加的なインタフェースにより管理および制御情報が与えられる。たとえば、管理データインタフェース59は、MII管理仕様(IEEE 802.3u)に従うスイッチトランシーバ16および100M\bps物理装置20と制御およびステータス情報をスイッチ12が交換できるようにする。たとえば、管理データインタフェース59は、双方向管理データIO(MDIO)信号経路に時間基準を与える管理データクロック(MDC)を出力する。
PCIインタフェース26は、PCIホストプロセッサ28によって内部IMSステータスおよび構成レジスタ60にアクセスし、かつ外部メモリ36にアクセスするための、32ビットPCI改訂2.1に適合したスレーブインタフェースである。PCIインタフェース26は複数のスイッチデバイスのための拡張バスとしての役割も果たし得る。管理ポート30は標準7ワイヤ反転シリアルGPSIインタフェースを介して外部MACエンジンにインタフェースされ、標準MAC層プロトコルによりホストコントローラがスイッチ12にアクセスできるようにする。
図3は、この発明の例示的な実施例に従う、図2のスイッチサブシステム56をより詳細に説明する図である。図2に示されるマルチポートスイッチ12の他のエレメントは、スイッチサブシステム56とこれらの他のエレメントとの接続を示すために図3に再度示される。スイッチサブシステム56はフレームの受信および転送を行なうためのコアスイッチングエンジンを含む。スイッチングエンジンを実現するために用いられる主な機能ブロックは、ポートベクタFIFO70と、バッファマネージャ72と、複数のポート出力キュー74と、管理ポート出力キュー75と、拡張バスポート出力キュー77と、フリーバッファプール104と、マルチコピーキュー90と、マルチコピーキャッシュ96と、リクレームキュー98とを含む。これらの機能ブロックの動作および構成は後により詳細に説明するが、まず、個々のエレメントに関する後の説明に関連性を持たせるために、図3のスイッチサブシステム56の全体像を簡単に説明する。
ポートからマルチポートスイッチ12に入るフレームには基本的に2つのタイプがある。すなわち、単一コピーフレームとマルチコピーフレームとである。単一コピーフレームは、マルチポートスイッチ12によって他の1つのポートにのみ送られることとなる、ポートで受信されたフレームである。これとは対照的に、マルチコピーフレームは、1つのポートで受信され、1つより多い数のポートに送信されるフレームである。図3では、各ポートは別個のMAC50によって表わされ、それ自体の受信FIFO52および送信FIFO54を有する。
単一コピーまたはマルチコピーであるフレームは内部MACエンジン50によって受信される。フレームパケットがポートで受信されると、それは受信FIFO52に置かれる。各フレームはヘッダを有し、これは、内部ルールチェッカ58または外部ルールチェッカ42のいずれかのルールチェッカに与えられる。ルールチェッカ42または58は、ヘッダの情報に基づいて、フレームパケットがどこから送り出されるかを決定し、すなわちいずれのポートを介してフレームパケットが送信されるかを決定する。
ルールチェッカ42または58が転送決定を行なうのと同時に、バッファマネージャ72はフリーバッファプール104からフリーバッファポインタを得る。このフリーバッファポインタは、受信FIFO52によってフレームがストアされることとなる外部メモリ36の場所である。バッファマネージャ72によってフリーバッファポインタがフリーバッファプール104から得られると、フリーバッファポインタによってポイントされるバッファはもはやフリーであるとは考えられない。フレームデータは、直接メモリアクセス(DMA)トランザクションでデータバス80を介して受信FIFO52から外部メモリ36に転送される。フレームはフリーバッファプール104から得られたフリーバッファポインタがポイントする場所にストアされるが、後に説明するように、フレームをストアするために多くの他のバッファが用いられてもよい。
ヘッダデータの他に、ルールチェッカ42または58はバッファマネージャ72からのフリーバッファポインタも受信する。このフリーバッファポインタはここではフレームポインタと呼ばれる。なぜなら、フレームがストアされる外部メモリ36でのメモリ場所をポイントするからである。ルールチェッカ42または58は、転送決定を行ないかつ「ポートベクタ」の形式で転送命令を発生するためにヘッダ情報を用いる。図示される例示的な実施例では、ポートベクタは、フレームが転送されるべき各出力ポートに対してセットされたビットを備えた28ビットベクタである。この全体像での例では、受信されたフレームは単一フレームであると想定する。したがって、ルールチェッカ42または58によって生成されたポートベクタには1つのビットしかセットされない。ポートベクタにセットされたビットはポートのうち特定的なものに対応する。
ルールチェッカ42または58はポートベクタFIFO70にポートベクタおよびフレームポインタ(ならびに制御操作コードおよびVLANインデックス)を置く。ポートベクタはポートベクタFIFO70によって検査され、ポートベクタに関連したフレームポインタがどの特定の出力キュー74に入力されるべきかを決定する。ポートベクタFIFO70は適切な出力キュー74の一番上にフレームポインタを置く。これによりフレームの送信がキューとして維持される。
ある時点で、フレームポインタは出力キュー74を通過した後に出力キュー74の一番下まで到達する。バッファマネージャ72はそれが出力キュー74の一番下まで到達したときにフレームポインタを取り、フレームポインタ書込バス86を介して正しいポートの適切な送信FIFO54にそのフレームポインタを送る。これによりフレームの送信がスケジュールされる。フレームポインタによってポイントされた外部メモリ36での場所からDMAトランザクションにおいて読出されたフレームデータは、適切な送信FIFO54に置かれ後に送信される。
マルチコピー送信は、ポートベクタが、フレームがそれらから送信されることとなるマルチプルポートを示す、セットされた複数のビットを有する点を除いて、単一コピー送信と同様である。フレームポインタは適切な出力キュー74の各々に置かれ、対応の送信FIFO54から送信される。
バッファマネージャ72は特殊な制御キューを用い、すなわち、フリーバッファプール104と、マルチコピーキュー90と、リクレームキュー98と、マルチコピーキャッシュ96とを用いて、受信フレームをストアするためにバッファを割当て、フレームがその指定された出力ポートに送信されると再度使用できるようバッファを取出すプロセスを管理する。後により詳細に説明するが、バッファマネージャ72はまた、出力キュー74ならびに制御キュー104、90および98のために外部メモリ36に「オーバフロー」領域を維持する。
この動作上の全体像を背景として、以下にスイッチサブシステム56の個々のセクションおよびさまざまな局面をより詳細に説明する。これらの局面のうち最初に説明するものは、この発明のさまざまな出力キュー74の構造である。10Mb/sポートおよび100Mb/s出力ポートに指定される出力キュー74の他に、管理ポート30のために出力キュー75が設けられ、拡張ポート26のために出力キュー77が設けられる。これらの出力キュー75および77は出力キュー74と同じ外部構成を有するが、後に説明するように、異なった内部構成を有する。
図4は、この発明の実施例に従う出力キュー74の外部構成を示すブロック図である。図4から明らかなように、この発明の出力キュー74は3部構成である。性能を最も高くするためには、チップ上のキュー構造のすべてを保持することが好ましいが(マルチポートスイッチ12を参照)、チップの占有面積に関する費用は非常に高い。これにより、チップが多数のエントリの切換を行ない、それらをキューとして維持する必要があるときにはジレンマが生じる。この発明は、チップ上に高性能な小容量セクションを含み、チップ外にオーバフロー領域を含む、単一の出力キューを与えることによりこのジレンマを解消する。オーバフロー領域は、チップ上の領域よりも比較的性能が低いにも関わらず、所要の大容量のキューとしてキューが役割を果たすようにする。
図4の実施例に従うこの発明の単一論理出力キュー74は3つの物理セクションを有する。これらには、出力キュー書込側76と、出力キュー読出側78と、外部メモリ36にある出力キューオーバフロー領域(全体が110として示される)とが含まれる。出力キュー74のすべてに関する外部メモリ36へのアクセスは、前述のとおり外部メモリインタフェース34を介するものである。この発明は、現在の外部メモリのバースト的な性質を利用し、(フレームポインタなどの)データが、チップ12を外部メモリ36に接続するバス84を介してバースト状にチップの内外からオーバフローキュー領域110に送られるようにする。
出力キュー書込側76および出力キュー読出側78はチップ12上にある。書込側76および読出側78は小さくて値段の高い資源であると考えられる。これとは対照的に、出力キュー74の第3の部分を形成するオーバフロー領域110は大きくて比較的安価である。書込側76および読出側78により高い性能がもたらされ、オーバフロー領域を通る経路によっては低性能で大容量の経路がもたらされる。
動作時に、出力キュー書込側76はエントリを受信する。この発明に従うマルチポートスイッチ12の例示的な実施例では、エントリは、フレームの最初の256バイトがストアされる外部メモリの第1のバッファをポイントするフレームポインタである。しかしながら当業者には、出力キューの構成74はエントリとしてのフレームポインタに制限されず、マルチポートスイッチおよび他の技術の両方において、他のタイプのエントリをキューとして維持することに広く適用可能であることが明らかであろう。
エントリが出力キュー書込側76内を完全に移動し、その一番下まで到達すると、出力キュー74に関連した制御論理はエントリをどう処理するか決定する。出力キュー読出側78にスペースがあれば、出力キュー74のオーバフロー領域110は空いており、1つまたはそれ以上のエントリが出力キュー書込側76から出力キュー読出側78に直接送られる。書込側76から読出側78に直接エントリを送ることはすべてチップ12上で行なわれるため、エントリは低レイテンシーで素早く完全に送られる。
出力キュー読出側78がいっぱいであり、出力キュー書込側76に少なくとも1バーストサイズの量のデータ(たとえばエントリの16バイト分)があれば、データはその出力キュー74のオーバフロー領域110にバースト状に書込まれる。出力キュー読出側78がいっぱいであり、かつ出力キュー書込側76にはまだ1バーストサイズの量のデータがないときは、エントリは出力キュー書込側に留まりさらに処理は行なわれない。最終的には、出力キュー読出側78は空になり、出力キュー読出側78に1バーストサイズの量のデータを収容する十分なスペースが生まれ、かつオーバフロー領域110にデータがあるときがくると、オーバフロー領域110から出力キュー読出側78に1バーストのデータが与えられる。
出力キュー構成において、読出側78は伝統的なキューとほぼ同様に作用する。なぜなら、エントリが1つずつ取出されるのはこの部分からであるからである。出力キュー書込側76は主に、データをバーストに組立てて外部メモリ36に書込むための回収機能を果たす。したがって、この発明は単一の事象(エントリを出力キュー74に置くこと)をバースト事象に変える。書込側76は、蓄積されたデータが必要に応じて外部メモリ36のオーバフロー領域110にバーストされるようにする。比較的稀な場合にのみ必要となる機能に高価なチップ資源を提供するのではなく、輻輳時にオーバフロー領域110が安価なストレージを提供する。この発明はチップ外のオーバフロー領域110を利用するが、この領域110のアクセスは、1度に多くのバイトの情報をバーストすることにより効率よく行なわれる。これは、単一のエントリがキューに対して書込まれたり読出されたりする従来のキュー構造とは対照的である。
動作時に、出力キュー74に到達するエントリが多ければ、これらのエントリはオーバフロー領域110に置かれ、チップ上のキュー78のオーバフローを回避するようにする。したがって、この発明のキュー構造を用いるとフレームの廃棄が大幅に防止される。また、オーバフロー領域110のためのメモリの合計量は、外部メモリ36のサイズを変更することにより容易に変更可能である。さらに、個々の特定のオーバフロー領域110のサイズは、出力キュー74の性能に影響を及ぼすことなくキューのサイズをカスタマイズするためにプログラム可能である。
典型的に、キューは、先入れ先出し構成を有する順序づけられた構成である。しかしながら、リクレームキュー98およびフリーバッファプール104などのいくつかのタイプのキューでは、エントリの順序は問題ではない。書込側100から読出側102にデータを直接送信することが可能であれば、この発明はそのキューに関するオーバフロー領域を迂回して情報がこの経路に直接送信されるようにする。これは、情報が順番によって影響を受けない限り、関連のオーバフロー領域に情報がある場合でも可能である。たとえば、バッファの再要求は順番によって影響を受けない。なぜなら、バッファがフレームにストアされる必要がなくなった後に、最終的にバッファがフリーバッファプール104のフリーリストに戻される順番は、いかなるものでも許容されるからである。したがって、データが順番によって影響を受けない場合に外部メモリ36のリクレームキュー98のオーバフロー領域110への書込についての帯域幅が生じるのを回避するために、読出側102にさらなるエントリのためのスペースがあるものと想定して、書込側100から読出側102に情報が直接送られる。リクレームキュー98は順番によって影響を受けないデータをキューとして維持するタイプのキューの一例である。しかしながら、順番によって影響を受けない他の多くのタイプのデータが種々の適用例で可能であるため、この発明のこの特徴は、他のタイプのデータをキューとして維持するキューにおいて有用性を見出す。
図1および図2に示されるこの発明の例示的な実施例のマルチポートスイッチには28個の出力キュー(各々が出力ポートと関連する)があり、すなわち、10Mb/sユーザポートに関するものが24個、100Mb/sサバポートに関するものが2つ、管理ポートに関するものが1つ、そして拡張バスポートに関するものが1つある。出力キュー74、75および77は、フレームポインタが送信のためにキューとして維持されるときにそれらに一時的なストレージを提供する。キュー作業は、転送ポートベクタに示されるさまざまな出力キュー74、75および77に対してポートベクタFIFO70がフレームポインタを書込むという形態をとる。
この発明のある好ましい実施例では、さまざまな出力キュー74、75および77は以下のフィールドのうちいくつかまたはすべてを含む。すなわち、単一コピービットと、フレームポインタと、制御操作コードまたは制御信号と、VLAN(バーチャルローカルエリアネットワーク)インデックスとである。単一コピービットは1つの出力ポートにのみ転送されることとなるフレームを示す。フレームポインタは外部メモリ36のフレームをポイントする。制御操作コードはフレームに関する特定的な情報(すなわち新たに得たフレームなど)を識別する。制御信号は制御操作コードからの情報を用いて、送信前にポートによってフレームがいかに処理されるかを示す。VLANインデックスは、外部へのフレームに(必要であれば)挿入されるべきVLANタグに対する基準を与える。しかしながら、この発明は種々のタイプのフィールドを有する他の出力キューにも適用可能であるため、これらのフィールドは例としてのみのものである。
第1のタイプの出力キュー74、すなわち10Mb/sポート出力キューの例示的な実施例の内部構成が図5に示される。10Mb/s出力キュー74は10Mb/sポートに転送されることとなるフレームのエントリを保持する。これらのキューの出力キュー書込側76は32個のエントリを保持し、出力キュー読出側78は図示される例示的な実施例において16個のエントリを保持するが、考えられる他のサイズのものもこの発明の範囲内である。10Mb/s出力キュー74は単一コピービットとフレームポインタ(14ビット)とを含む。この発明のマルチポートスイッチの例示的な実施例では、10Mb/sポートにはVLANタグがないためVLANインデックスは必要ない。
第2のタイプの出力キュー74、すなわち100Mb/sポート出力キューの例示的な実施例の内部構成が図6に示される。100Mb/sポート出力キューは100Mb/sポートに転送されることとなるフレームのエントリを保持する。出力キュー書込側76はこのタイプの出力キューに64個のエントリを保持し、出力キュー読出側は16個のエントリを保持する。各エントリはVLANインデックスと、部分的な制御操作コード(ビット4−0)と、単一コピービットと、フレームポインタとを含む。
外部メモリ36の例示的なマップが図7に示される。外部メモリ36の全体の容量はたとえば4Mbであるが、種々の実施例において他の容量のメモリが採用されてもよい。この発明に従ってオーバフロー領域に外部メモリ36を使用することにより、外部メモリを変更するだけで出力キューのサイズを増減することができる。これは、キューとして維持する容量全体がチップの製造時に設定される、キュー構成がすべてチップ上にあるシステムよりも有利である。
スイッチ12のストア要件を満たすために、外部メモリ36の例示的な実施例は下記の領域にスペースを割当てる。すなわち、フリーバッファプールオーバフロー120と、リクレームキューオーバフロー122と、マルチコピーキューオーバフロー124と、管理ポート出力キューオーバフロー126と、10Mb/sおよび100Mb/s宛先ポートの各々のための個々の出力キューオーバフロー128と、拡張バスポート出力キューオーバフロー130と、MIBカウンタ132と、グローバルフレームバッファプール134とである。
メモリ領域全体のBASEアドレスはチップ上のレジスタ60の中のメモリベースアドレスレジスタ内でプログラム可能である。外部メモリマップ内の各領域のBASEアドレスはレジスタセット内でプログラム可能である。領域長レジスタは不要である。所与の領域の長さは、マッピング内のその領域のBASEアドレスから次の領域のBASEアドレスまでの領域に等しい。
個々のオーバフロー領域の長さ(したがって容量)がプログラム可能であるため、各キューの容量全体がプログラム可能である。この発明のこの特徴により、必要に応じて容量の増大した特定の出力キューを提供するようにスイッチをカスタマイズすることが可能になる。
したがって、チップ12上の制御キューに適合しない後続のオーバフロー領域ストアエントリは外部メモリ36に置かれる。フリーバッファプールオーバフロー領域120はアドレスポインタをグローバルフレームバッファプール134中の未使用のバッファにストアする。リクレームキューオーバフロー領域122は、必要でなくなったリンクトリストチェーンにフレームポインタをストアする。マルチコピーキューオーバフロー領域124は(キューとして維持されたフレームポインタについては)コピーナンバー「≧1」を、かつ(うまく送信されたフレームについては)コピーナンバー「−1」を付してフレームポインタをストアする。
後続のオーバフロー領域は、チップ上に入らない出力キューのエントリをストアする。管理ポート出力キューオーバフロー領域126は管理ポートへの送信を待機するフレームポインタをストアする。出力キューオーバフロー領域128は適切な10Mb/sまたは100Mb/sポートへの送信を待機するフレームポインタをストアする。拡張バスポート出力キューオーバフロー領域130は拡張バスポートへの送信を待機するフレームポインタをストアする。
MIBカウンタ領域132は、スイッチ12によって周期的に更新されるポートごとの統計をすべて含む。スイッチ12はMIB統計をストアするための8ビットおよび16ビットカウンタをチップ上に維持する。スイッチ12はMIBデータの損失を防止するために要求される周波数で、外部メモリ36の32ビットまたは64ビットのMIBカウンタを更新する。
グローバルフレームバッファプール134は、受信されたフレームデータをストアするリンクトリストのバッファを含む。任意の時点で、これらリンクトリストは有効フレームデータと無効になったバッファとを含み、無効になったこれらのバッファは、バッファマネージャ72によってフリーバッファプール104に戻されるか、またはPCIホストプロセッサ28の所有となる。
次に図8を参照して、いずれかのMACポートまたはPCIバスから受信されたフレームデータは、この発明の例示的な実施例におけるリンクトリストデータ構成のフォーマットで外部メモリ36にストアされる。リンクトリストを生成するために用いられるバッファ140の長さは256バイトであるが、発明の種々の実施例では他の長さのバッファ長さが採用されてもよい。これらのバッファ140の各々へのアドレスポインタはスイッチ12内のフリーバッファプール104によってストアされる。
スイッチ12のポートのうち1つにフレームが受信されると、バッファマネージャ72はフリーバッファプール104からアドレスポインタを要求し、バッファ140をリンクしてフレームをストアするようにする。フレームをストアする外部メモリ36の第1のバッファに対するアドレスポインタが、そのフレームに対するフレームポインタになる。フレームポインタは、送信されることとなるフレームをキューとして維持するためのスイッチサブシステム56において用いられる。
バッファ140は、メモリの次のバッファの場所を示す各バッファヘッダ142のアドレスポインタによって互いに繋がれる。バッファヘッダ142はまた、バッファ140に含まれるフレームデータに関する他の情報を含む。図9aの例示的なバッファヘッダフォーマットに示されるように、先頭のバッファのヘッダは12バイトである。図9bに示されるように、後の各バッファのヘッダは4バイトである。外部メモリバーストは、2バンク×16バイトの長さであるため、各バッファの実際のフレームストア容量は256B−16B=240Bである。
図9aおよび図9bに示されるように、先頭および後のバッファヘッダフォーマットは下記のフィールドを含む。
バッファフォーマットビット:どのバッファフォーマットが使用中であるかを示す。1は12バイトの長さの先頭バッファフォーマットを示す。0は4バイトである後のバッファのフォーマットを示す。バッファを繋ぐ際に残りのバッファの各々に関して用いられる。
Eビット(フレームマーカの最後):フレームに関する最後のバッファであることを示す。Eビットがセットされていれば、チェーンにはこれ以上バッファはない。
Cビット(CRCエラー検出):CRCエラーが受信機によって検出されたことを示す。Cビットが検出されると、送信機能は反転されたCRCを意図的に送信する。
Lビット(整列エラー):フレーム整列エラーが(CRCエラーとともに)受信フレームに検出されたことを示す。
Oビット(受信FIFOオーバフロー):受信FIFOがオーバフローし、バッファのデータが有効でないかもしれないことを示す。
バッファ長さ:バッファヘッダの後の最初のバイトから始まる、バッファのデータフィールドにおいて有効なバイトの合計数。この長さにはオフセットバイト値は含まれるべきではない。
次のバッファポインタ:次のバッファに対するポインタ。次のバッファポインタはEビットがセットされているときには有効でない。
オフセットバイト数:バッファのフレームデータセクションにおいてフレームの最初のバイトが始まる場所を示す。0のオフセットは、データがバッファヘッダ142の後の最初のビットで始まることを意味する。0のオフセットは、データがバッファの16番目のバイトに後続するバイトで始まることを示す。オフセットが0でない値の場合、フレームデータは16B+バッファの始まりからのオフセットの後に始まる。送信機能はオフセットバイトフィールドに示されるバイト数だけ飛び越す。
Pビット(ポートタイプ):入来する受信フレームのポートタイプを示す。0は10Mb/sポートを示し、1は100Mb/sポートを示す。このビットは、フレームが完全に受信されて外部メモリ36にバッファされる前に、フレームを拡張バスに転送するようスイッチ12をプログラミングする際に、タイムスタンプフィールドに関連してホスト28によって用いられる。
Tビット:受信されたフレームのタイプを示す。タグ付またはタグ付でない場合がある。1はタグ付のフレームであることを示し、VLAN識別子フィールドは受信VLAN IDを含む。0はタグ付でないフレームを示し、VLAN IDは有効でない。
受信ポート番号:フレームが受信されたポート番号を示す。
VLAN識別子:「タグ付」ポートから受信されたVLAN ID。フレームがタグ付でないポートから受信される場合、このフィールドは無効である。
Rビット(CRC再計算):CRCを除去し送信機能において再計算する必要があることを示す。スイッチ12はタグ付フレームが受信されるとこのビットをセットする。さらに、ホスト28がフレームの内容を修正した場合、ホスト28はこのビットをセットしなければならない。スイッチ12がフレームを送信すると、スイッチ12はこのビットを検査して、既存のCRCを送信するか、CRCを除去してCRCを再計算するかを判断する。
Aビット(CRC追加):フレームデータの最後にCRCがないことを示す。ホストはメモリに(CRCなしの)フレームを生成し、このビットをセットすることができる。スイッチ12はフレームの送信時にCRCを発生して追加する。Aビットがセットされている場合、フレームの長さにはCRCは含まれるべきでない。
Fビット(フォーマットビット):フレーム長/タイムスタンプフィールドを特定する。0はフィールドが入来フレームのタイムスタンプであることを示す。1はフィールドが受信フレームのフレーム長であることを示す。
フレーム長/タイムスタンプ:Fビットに依存する。Fビットがクリアされていると、このフィールドは受信フレームの最初からのタイムスタンプを表わす。タイムスタンプは1μsの分解能を有する。Fビットがセットされている場合には、CRCおよび受信されたVLANタグの全てを含む受信フレームの長さの合計が示される。フレームが受信されると、スイッチ12は(タイマレジスタからの)タイムスタンプでこのフィールドをマークする。フレームが完全に受信される前に拡張バスフレームを転送するようホスト28によってスイッチ12がプログラミングされている場合、フレームデータを過度に読出すことなく外部メモリ36から取出すことができるデータを測定するために(受信ポートの速度とともに)タイムスタンプを用いることができる。フレーム全体が受信されると、スイッチ12はフレーム長をこのフィールドに書込みFビットをセットする。
コピー数:ポートベクタFIFO70によって送信されるようにうまくキューとして維持されたコピーの数を示すために用いられる。このフィールドは、バッファマネージャ72が、新しいエントリのためのマルチコピーキャッシュ96にスペースを設ける必要がある場合に、フレームポインタのコピー数をストアするために用いられる。
図10は図3のスイッチサブシステム56のいくつかの要素を示す詳細図である。これらの要素は、フレーム記憶のためのバッファを与えるため、かつ、バッファがフレーム記憶のためにもはや必要とされなくなるとこれらのバッファを再要求し、再び使用可能にするために用いられる。上述のように、各出力キュー74、75(出力キュー77を除く)はフレームポインタをバッファマネージャ72に渡し、バッファマネージャ72はフレームポインタが指すフレームの送信をスケジュールする。バッファマネージャ72は、1)スイッチ12の内部バスを管理し、2)出力キュー74への/からのフレームポインタのキュー入れ/出しを容易にし、3)バッファの位置を決め、フリーバッファプール104に戻すために制御キュー90、98を管理し、4)外部メモリ36を出入りするデータの流れを制御し、5)MIBおよびオーバーフロー領域を含むメモリ構造を維持するという機能を制御する。バッファマネージャ72は全アクセスを外部メモリ36に割当てるためのスケジューラ機能を含む。これらのアクセスには、1)受信されたフレームデータを記憶バッファ140に書込み、2)送信のために記憶バッファ140からフレームデータを読出し、3)出力キュー74および制御キュー90、98のためのオーバーフロー領域の各々にフレームポインタを維持し(すなわち、書込み、読出す)、4)MIBカウンタを更新することが含まれる。
バッファマネージャ72が所与のフレームポインタを適切な全出力キュー74、75にコピーした後、ポートベクタFIFO70がコピーの数(「コピー数」)を計算し、フレームポインタおよびコピー数をマルチコピーキュー90の書込側に入れる。コピー数は、フレームが転送されるべきでないことを示す「0」、単一コピー送信を示す「1」、またはマルチコピー送信を示す「>1」であり得る。これらの3つの場合を以下に説明する。
コピー数が「0」であり、フレームポインタがセットされたビットのないヌル転送ポートベクタを有することが意味されているとき、ポートベクタFIFO70はフレームポインタをリクレームキュー98の書込側100に直接渡す。バッファマネージャ72がリクレームキュー98を処理するときは、以下に述べるようにバッファマネージャ72がバッファのリンクトリストチェーンを解体し、各「フリー」バッファごとのアドレスポインタをフリーバッファプール104の書込側106に戻す。
コピー数が「1」の単一コピー送信のとき、ポートベクタFIFO70はフレームポインタ、制御信号/制御操作コードおよびVLANインデックスを適切なポートの出力キュー74にコピーする。ポートベクタFIFO70は出力キュー74内の単一コピービットをセットして(図5および図6参照)、これが単一の送信であることを示す。バッファマネージャ72はそのポートの出力キュー74からフレームポインタおよび単一コピービットを読出すと、上述のように送信をスケジュールする。バッファマネージャ72は、フレームがストアされている外部メモリ36において最初のバッファの位置を決めるためにフレームポインタを用いる。バッファマネージャ72はこの最初のバッファからバッファヘッダを読出し、最初のバッファからデータを捕捉し、このデータを適切なMAC送信FIFO54に入れる。フレームが複数バッファにおよぶ場合を想定すると、そのフレームのためのチェーン内の全バッファを見つけ、送信するためのアドレスを、後続バッファへのリングがバッファマネージャ72に与える。データが送信のためにFIFO54に一旦置かれると、バッファは不使用となり、フリーバッファプール104に戻され、結果として別のフレームデータをストアするために再割当される。
コピー数が1よりも大きいとき、ポートベクタFIFO70はフレームポインタ、VLANインデックスおよび制御信号/制御操作コードを適切な出力キュー74の各々にコピーする(キュー74に言及する際には、キュー75、77もまた言及されている)。ポートベクタFIFO70は出力キュー74内の適切なフレームポインタのための単一コピービットをクリアし、コピー数が「>1」であるフレームポインタをマルチコピーキュー90の書込側92に入れる。
バッファマネージャ72がフレームポインタおよびクリアされた単一コピービットを出力キュー74の1つから読出すたびに、バッファマネージャ72はフレームの送信をスケジュールするが、コピー数「1」のフレームポインタを有するエントリがあるかどうかマルチコピーキャッシュ96をも調べる。コピー数「1」のフレームポインタがマルチコピーキャッシュ96に見つかれば、バッファマネージャ72は、フレームの単一コピー送信の場合と同様に、送信のためにフレームをスケジュールし、送信の間にバッファを再要求する。しかしながら、フレームポインタがマルチコピーキャッシュ96にないか、マルチコピーキャッシュ96におけるフレームポインタのコピー数が1よりも大きければ、バッファマネージャ72はフレームを送信するがバッファを再要求しない。送信を成功させた後、バッファマネージャ72はフレームポインタのコピーをコピー数「−1」とともにマルチコピーキュー90の書込側92に入れる。
マルチコピーフレームが送信されるたびに、バッファマネージャ72はマルチコピーキャッシュ96内にコピー数「1」のフレームポインタを見つけられなかったならば、フレームポインタのコピーをマルチコピーキュー90に入れる。したがって、いかなる所与の時間でも、マルチコピーキュー90はコピー数が「1」よりも大きいフレームポインタ、および/または、各々コピー数が「−1」である、同じフレームポインタのいくつかのコピーを含むことができる。
バッファマネージャ72は不使用となったバッファを再要求するためにマルチコピーキュー90およびマルチコピーキャッシュ96を絶えず処理する。バッファマネージャ72はマルチコピーキュー90を処理し、コピー数「>1」のフレームポインタを読出すと、この新しいエントリ(フレームポインタおよびコピー数)をマルチコピーキャッシュ96に入れようと試みる。マルチコピーキャッシュ96がフルであれば、バッファマネージャ72はその新しいフレームポインタのためにスペースを設ける。バッファマネージャ72は「より古い」マルチコピーキャッシュエントリを読出し、外部メモリ36内のそのバッファヘッダ内のこのエントリに対するコピー数を更新し、このエントリをマルチコピーキャッシュ96からクリアする。マルチコピーキャッシュ96内に使用可能な空きができると、バッファマネージャ72はマルチコピーキュー90からの新しいエントリをマルチコピーキャッシュ96に入れることができる。
バッファマネージャ72がマルチコピーキュー90を処理し、コピー数「−1」のフレームポインタを読出すと、それはマルチコピーキャッシュ96を探索して、デクリメントまたはデリートするためにコピー数「≧1」の対応するフレームポインタアドレスを探す。バッファマネージャ72がフレームポインタの一致を見つければ、それは1)コピー数が「>1」であればマルチキャッシュのフレームポインタをデクリメントするし、または2)コピー数が「1」であればマルチコピーキャッシュのフレームポインタ/コピー数エントリをデリートし、フレームポインタをリクレームキュー98に入れる。
一致するフレームポインタが見つからなければ、バッファマネージャ72はコピー数を求めて外部メモリ36(図9参照)におけるフレームポインタのバッファヘッダを探索する。メモリ内のコピー数が「1」であれば、バッファマネージャ72はフレームポインタをリクレームキュー98に入れる。メモリ内のコピー数が「>1」であれば、バッファマネージャ72はこのコピー数のフレームポインタをマルチコピーキャッシュ96に入れ、そのコピー数をデクリメントする。
バッファマネージャ72は、フレームポインタを読出してから、リンクトリストチェーンをたどり、バッファをフリーバッファプール104に戻すことによって、リクレームキュー98を絶えず処理する。この作用は、ヌルポートベクタを有し、ポートベクタFIFO70によってリクレームキューに入れられていたフレームか、マルチコピー転送ベクタを有し、全コピーの送信を完了したフレームかのためのバッファを戻すのみである。単一コピーフレームにリンクされたバッファは、上述のようにそのフレームが送信されるときにフリーバッファプール104へと直接戻される。
出力キュー74と外部メモリ36内のそのオーバーフロー領域110とがフルであるために、ポートベクタFIFO70が単一コピー転送ベクタのためのフレームポインタを出力キュー74に入れることができなければ、そのフレームは廃棄される。フレームポインタはリクレームキュー98に戻され、フレームの廃棄がスイッチの管理資源によって記録される。
1つ以上の出力キュー74と外部メモリ36内のそれらのオーバーフロー領域110とがフルであるために、ポートベクタFIFO70がマルチコピー転送ベクタのための1つ以上のフレームポインタを入れることができなければ、そのフレームは使用可能なスペースのある出力キューへと転送されるのみであり、マルチコピーキュー90に入れられたコピー数はうまく入れられたフレームポインタを反映するのみである。フレームポインタが入れられなかったことは、フレームポインタがキューに入れられなかった各ポートごとにスイッチ管理資源によって記録される。全出力キュー74と外部メモリ36内のそれらのオーバーフロー領域110とがフルであるためにポートベクタFIFO70がマルチコピー転送ベクタのためのどのフレームポインタも入れることができなければ、そのフレームポインタはリクレームキュー98に渡され、スイッチ管理資源にはそれに従い通知される。
マルチコピーキュー90は、フレームをストアするために用いられる全バッファ(すなわち、アドレスポインタ)がフリーバッファプール104に戻され得る前に、特定のマルチコピーフレームの何回の送信が完了されなければならないかを追跡するためにバッファマネージャ72が用いる高優先順位キューである。この出力キューの書込側92および読出側94はそれぞれ64エントリおよび16エントリを保持する。マルチコピーキュー90はマルチコピーキャッシュ96に入力を与え、マルチコピーキャッシュ96はいつバッファを再要求するかを決定するためにバッファマネージャ72によって用いられる。マルチコピーキューの内部構造を図12に示す。
出力キュー74にうまく入れることができたフレームポインタの数に基づいて、ポートベクタFIFO70はフレームのフレームポインタコピーと「>1」であるコピー数とをマルチコピーキュー90に入れる。特定のポートの出力キュー74がフルであれば、ポートベクタFIFO70はフレームポインタのコピーをその出力キュー74に入れることができず、したがって、これをコピー数を決定する際の成功した事象として含めることはできない。
バッファマネージャ72が出力キューフレームポインタを読出し、単一コピービットが「0」である(すなわち、マルチコピー)ことを見つけるたびに、それは、これが最後の送信であることを示すコピー数「1」のフレームポインタを求めてマルチコピーキャッシュを調べる。この一致が見つからなければ、各バッファの内容が送信された後に不使用になったバッファをフリーバッファプール104に与えることによって、バッファマネージャ72は単一コピー送信の場合と同様にフレームを送信し、バッファを再要求する。一致が見つかれば、バッファマネージャ72はマルチコピーフレームを送信し、コピー数「−1」のフレームポインタのコピーをマルチコピーキュー90に入れる。拡張バス出力キュー75または管理ポート出力キュー77へとキューに入れられたフレームのためのマルチコピーフレームポインタの(PCIインターフェイス26を介しての)使用をホストが終了すると、ホストはコピー数「−1」のフレームポインタのコピーをフレームポインタレジスタを介してマルチコピーキューへと書込む。このレジスタは図2におけるレジスタ60のブロックに示されるレジスタの1つである。
出力キュー74と同様に、マルチコピーキュー90も入力経路および出力経路を備えて構成される。入力経路または書込側により、ポートベクタFIFO70およびバッファマネージャはフレームポインタ/コピー数をマルチコピーキュー90に入れることができる。出力経路または読出側により、マルチコピーキュー90はフレームポインタ/コピー数をマルチコピーキャッシュ96に入れることができる。マルチコピーキューオーバーフロー124と呼ばれる、フレームポインタ/コピー数のためのさらなるストレージが外部メモリ36に設けられる。
フレームポインタ/コピー数が空のマルチコピーキュー90に書込まれると、それらは読出側94がフルになるまで書込側92から読出側94へと移動する。マルチコピーキュー90の書込側92に書込まれるさらなるフレームポインタ/コピー数は外部メモリ36内のマルチコピーキューオーバーフロー領域124に入れられる。一旦マルチコピーキュー90の読出側94とそのオーバーフロー領域124とがフルになれば、マルチコピーキューに入れられるさらなるフレームポインタ/コピー数が書込側92を満たし始める。
マルチコピーキュー90を通過するフレームポインタの順序は、マルチコピーキューの読出側94のスペースがクリアされると、フレームポインタ/コピー数がマルチコピーキューオーバーフロー領域124からマルチコピーキューの読出側94へと移動し、マルチコピーキューの書込側92からマルチコピーキューオーバーフロー領域124へと移動するようにして維持される。
マルチコピーキャッシュ96はマルチコピーキュー90と同様であるが、フレームポインタ/コピー数をスキャンするための探索可能な領域を設ける。マルチコピーキャッシュ96は256までのエントリを保持する。バッファマネージャ72はマルチコピーキュー90からフレームポインタを読出し、コピー数が「>1」または「−1」のいずれであるかによって、フレームポインタをマルチコピーキャッシュ96に入れるかそれを処理するかする。
さらに、バッファマネージャ72が出力キュー74の読出側からフレームポインタを読出すごとに、バッファマネージャ72は送信をスケジュールする。単一コピービットが「0」である(マルチコピーフレームを意味する)ならば、バッファマネージャ72は、このフレームの最後の送信であることを示すコピー数「1」のフレームポインタを求めてマルチコピーキャッシュ96をスキャンする。一致があれば、バッファマネージャ72はフレーム送信の間にエントリを除去し、バッファをフリーバッファプールに戻す。一致がなければ、バッファマネージャは送信の終了時にコピー数「−1」のフレームポインタをマルチコピーキュー90に入れる。
バッファマネージャ72は周期的に、フレームポインタ/コピー数を読出し、それをマルチコピーキャッシュ96に入れるか処理することによってマルチコピーキュー90を処理する。これはフレーム送信から独立して行なわれる。バッファマネージャがコピー数「>1」のフレームポインタを読出すか、コピー数「−1」のフレームポインタを読出すかによって2つの場合が引き続いて生じる。
1)バッファマネージャ72がマルチコピーキュー90からコピー数「>1」のフレームポインタを読出す。マルチコピーキャッシュ96に空きがあれば、それは新しいエントリを書込む。マルチコピーキャッシュ96がフルであれば、バッファマネージャ72はキャッシュ96内のスペースをクリアしなければならない。これが行われるのは、マルチコピーキャッシュ96からより古いフレームポインタ/コピー数の1つを読出し、外部メモリ36内のフレームポインタのバッファヘッダをマルチコピーキャッシュ96内のコピー数で更新し、このキャッシュエントリをデリートすることによってである。一旦スペースが生じると、新しいフレームポインタ/コピー数がマルチコピーキャッシュ96に書込まれる。
2)バッファマネージャ72がマルチコピーキャッシュ90からコピー数「−1」のフレームポインタを読出す。バッファマネージャ72はコピー数「≧1」の一致するフレームポインタを求めてマルチコピーキャッシュ96を探索する。バッファマネージャ72がマルチコピーキャッシュ96内でフレームポインタの一致を見つけられるかどうかによって2つの場合が続く。
a)バッファマネージャ72がフレームポインタの一致を見つける。マルチコピーキャッシュ96のエントリのコピー数が「1」であれば、バッファマネージャ72はマルチコピーキャッシュエントリをデリートし、フレームポインタをリクレームキュー98に入れる。キャッシュエントリのコピー数が「>1」であれば、バッファマネージャ72はコピー数を「1」だけデクリメントする。
b)バッファマネージャ72がマルチコピーキャッシュ96内でフレームポインタの一致を見つけられない。これは、一致するフレームポインタが外部メモリ36内のフレームのリンクトリストチェーンのバッファヘッダに既に移動されていることを意味する。バッファマネージャ72はバッファヘッダに行って、コピー数を読出さなければならない。(メモリ内の)この値が「1」であれば、フレームはもはや必要ではなく、バッファマネージャ72はフレームポインタをリクレームキュー98に入れる。(メモリ内の)この値が「>1」であれば、バッファマネージャ72は(外部メモリ36内にあった)フレームポインタ/コピー数のコピーをマルチコピーキャッシュ96に入れ、コピー数を「1」だけデクリメントする。マルチコピーキャッシュ96がフルであれば、バッファマネージャはより古いフレームポインタ/コピー数の1つを外部メモリ36に移動させることによってスペースをクリアする。
リクレームキュー98はもはや必要とされないリンクトリストチェーンを指すフレームポインタを保持する。バッファマネージャ72は、マルチコピーキャッシュを処理してフレームポインタのコピー数が「1」である(すなわち、フレームの最後の送信がうまく終った)ことを見出すと、フレームポインタのリクレームキューに書込む。さらに、ポートベクタFIFO70は、1)フレームポインタのポートベクタがヌルであるか、2)転送ベクタの全出力キューがフルであったのでフレームポインタがキューに入れられることができなかったという条件下で、フレームポインタをリクレームキュー98に書込む。最後に、ホストは、拡張バス出力キュー77または管理ポート出力キュー75に対してキューに入れられた単一コピーフレームの使用を終えると、(フレームポインタレジスタを用いて)フレームポインタをリクレームキュー98に書込む。
バッファマネージャ72はリクレームキューのエントリを処理するとき、フレームポインタのリンクトリストチェーンをたどり、各バッファをフリーバッファプール104に戻す。リクレームキュー構造の内部構造は図示されないが、本発明の例示的実施例においてはフレームポインタ(14ビット)のみを含む。リクレームキューの書込側100は64エントリを保持し、リクレームキューの書込側102は16エントリを保持する。
出力キュー74と同様に、リクレームキュー98は入力経路および出力経路を備えて構成される。入力経路または書込側100によってバッファマネージャ72はフレームポインタをリクレームキュー98に入れることができる。出力経路または読出側102によってバッファマネージャ72はフレームポインタを読出し、関連の全バッファをフリーバッファプール104に戻すことができる。フレームポインタのためのさらなるストレージは外部メモリ36内に設けられるリクレームキューオーバーフロー領域122内に設けられる。
フレームポインタが空のリクレームキュー98に書込まれると、これらは読出側102がフルになるまで書込側100から読出側102へと移動する。リクレームキュー98の書込側100に書込まれるさらなるフレームポインタは外部メモリ36内のリクレームキューオーバーフロー領域122に入れられる。一旦リクレームキュー98の読出側102およびオーバーフロー領域122がフルになると、リクレームキュー98に入れられるさらなるフレームポインタが書込側100を満たし始める。
図11はフリーバッファプール104の内部構造の例示的実施例を示す。フリーバッファプール104は、外部メモリ36内の全フリーバッファ140を指すアドレスポインタを含んだFIFOである。フレームが受信されると、バッファマネージャ72は入来するデータをストアするためにフリーバッファプール104から使用可能なアドレスポインタを捕捉する。バッファマネージャ72はまたフリーバッファプール104からのアドレスポインタを(要求される場合)ホストプロセッサ28に割当てる。ホストは、直接入力/出力スペースにおけるレジスタ60の中のフリーバッファプールレジスタを読出すか書込むことによってアドレスポインタを要求するかそれらをフリーバッファプール104に戻すことができる。フリーバッファプール104の書込側106および読出側108は本発明の例示的実施例においては各々64エントリを保持する。
フリーバッファプール104は(出力キュー74と同様に)入力経路および出力経路を備えて構成される。入力経路または書込側106により、バッファマネージャ72またはホスト28はアドレスポインタをフリーバッファプール104へと入れることができる。フリーバッファプール104の出力経路または読出側108により、バッファマネージャ72はアドレスポインタをホスト28に与え、またはプール104からアドレスポインタを引出して受信フレームデータをストアすることができる。使用可能なアドレスポインタのさらなるストレージ、フリーバッファプールのオーバーフロー領域120は上述のように外部メモリ36内に設けられる。
スイッチ12が起動すると、フリーバッファプールは読出側108からアドレスポインタを発生する。フレームが入来するときにフリーバッファプール104内のフリーリストが読出される。書込側106にトラフィック要求を扱うのに十分なバッファポインタがなければ、オーバーフロー領域120がより多くのバッファポインタを得るためにアクセスされる。
本発明のある実施例は、スイッチ12が開始されるとバッファポインタを与える有利な配置および方法を提供する。スイッチ12が初めに電源投入されるとき、外部メモリ36内のオーバーフロー領域120がバッファポインタを含むことは必要とされない。代わりに、バッファポインタはオンザフライで発生される。スイッチ12は電源投入されるとバッファポインタを発生し、それをオーバーフロー領域120に入れることができるが、このようなポインタは16,000個または32,000個存在することがあり、これによってスイッチ12の電源投入手順が遅くなるであろう。本発明は、電源投入時に全バッファがフリーであり、これらのバッファのアイデンティティが既知であるという事実を利用する。したがって、バッファポインタは電源投入後に必要とされるときに図10に示されるようにカウンタ180を用いて発生される。
フリーリストカウント発生器180がマルチプレクサ182の入力に接続される。フリーバッファプール104のフリーリストが開始時に空であるので、フリーリストカウンタ180はバッファポインタを発生する。一旦フリーリストが最高カウントに達すると、それはこれ以上バッファポインタを発生しない。
フレームパケットがスイッチ12において受信されると、フレームパケットは固定長バッファへと分解する。典型的にフレームはさまざまなサイズである。バッファは256バイトのサイズであり、バッファのデータ部分は240バイトである。バッファ内容の送信後、バッファポインタがリクレームキュー98に入れられるか、または、バッファチェーンをたどることができるならばフリーバッファプール104のフリーリストに直接入れられる。スイッチ12の動作の間、フリーバッファプール104に戻されるどのアドレスポインタも書込側106から読出側108へと移動する。読出側108がフルとなれば、さらなるアドレスポインタはオーバーフロー領域120に渡される。一旦読出側108およびオーバーフロー領域120がフルとなると、フリーバッファプール104に入れられるさらなるアドレスポインタがプール104の書込側106を再び満たし始める。
図13は本発明の実施例に従うマルチコピーキャッシュ96の内部配列の概略図である。上で簡単に述べたように、マルチコピーキャッシュ96へのエントリの時間順が維持される。本発明では、このように時間順が維持されるのは先行技術におけるようなタイムスタンプによってではなく、メモリ内の物理的順序によってである。本発明のマルチコピーキャッシュ96はまた有効性ビットの使用を避け、代わりに後述するように有効性を符号化する。
図13を参照すると、マルチコピーキャッシュ96は4ウェイセットアソシアティブメモリとして構成される。マルチコピーキャッシュ96へのエントリは上述のようにフレームポインタとそのコピー数とを含む。フレームポインタの最下位6ビットが、エントリがストアされるセットアソシアティブキャッシュ96内の行を決定する。本発明の図示される実施例では、キャッシュ96には64行が存在するが、キャッシュサイズが大きくされれば他の行数も制限されない。
セットアソシアティブキャッシュ96は4列に分割され、その各々が並行して探索される。バッファマネージャ72がエントリをキャッシュ96へとストアするとき、エントリは常に、第1の列の、フレームポインタの最下位6ビットによって示される行の最上位(51:39)ビットに入る。この行は読出され、全エントリが13ビット分右にシフトされ、行は再び書込まれる。実際にキャッシュ96に書込まれるエントリはフレームポインタの上位8ビットを含み、それはアドレスタグとフレームポインタに関連した5ビットコピー数を形成する。エントリがキャッシュ96から読出されると、フレームポインタはキャッシュ96の行数を指すビットおよびアドレスタグで再形成される。
行がフルであり、その行への新たなエントリが書込まれれば、キャッシュ96内の最も古いエントリがキャッシュ96から除去される。バッファヘッダ142に関して上述したように、除去されるフレームポインタに関連したコピー数は除去されるフレームポインタが指す外部メモリ内のフレームのバッファヘッダ142に書込まれる。したがって、外部メモリ36にストアされるフレーム(すなわち、バッファ140)はコピー数をストアするためのマルチコピーキャッシュ96のためのオーバーフロー領域となる。
本発明の有利な特徴の1つはセットアソシアティブキャッシュ96に別個の有効ビットが存在しないことである。コピー数が00000であるとき、エントリがもはや有効でないことをバッファマネージャ72はわかっており、エントリをキャッシュ96から除去する。これによってキャッシュ構成が簡素化される。本発明のキャッシュ96の別の利点は非常に高速な探索が行なわれ得ることである。これは、バッファマネージャ72がマルチコピーキュー90を出たフレームポンタによって既に定められている単一の行を検査しさえずればよいためである。その行内の4つのエントリが並行して検査され、探索速度をさらに高める。4ウェイセットアソシアティブメモリとして説明しているが、これは例にすぎず、メモリは本発明の範疇から逸脱せずにnウェイセットアソシアティブ方式となり得る。
上の説明から、本発明がキャッシュにおけるエントリの行ごとの物理的位置決めによってキャッシュエントリの時間順(エージ)を維持すると理解されるべきである。すなわち、キャッシュ内のエントリの物理的位置がエントリの相対的エージを示す。エントリはメモリにおけるエントリの物理的再順序付けによってエージングされる。
本発明のある実施例はポートごとにスイッチ12によって切換えられるフレームのレイテンシをカスタマイズする。図14を参照すると、ポートベクタFIFO70が受信ポートのプログラムされたスイッチモードを検査して、いつフレームポインタおよび関連の情報を送信ポートの適切な出力キュー74へと入れるかを決定する。第1のモード(低レイテンシモード)では、ポートベクタFIFO70はいつフレームポインタを出力キュー74に入れるかに対して制限を与えない。第2のモード(中間レイテンシモード)では、ポートベクタFIFO70はフレームの64バイトが受信されて初めてフレームポインタを出力キュー74に入れる。第3のモード(高レイテンシモード)では、ポートベクタFIFO70はフレームが完全に受信されて初めてフレームポインタを出力キュー70に入れる。
いつポートベクタFIFO70がフレームポインタを出力キュー74へと移動するかのタイミングを変えるいくつかの特殊な場合があり、それらは、1)第1または第2のモードの10Mb/sポートから100Mb/sポートへのフレーム転送と、2)管理ポート30へのフレーム転送と、3)拡張バスポートへのフレーム転送とを含む。場合1)では、10Mb/sポートから100Mb/sポートへの速度不一致によって転送モードが強制的に第3の高レイテンシモードとされる。場合2)では、管理ポートへと移動する全フレームが第3のモードのフレームである。場合3)では、拡張バスポートへのどのフレーム転送も拡張バスポート26のスイッチモードを用いる。マルチコピーポートベクタが特殊な場合のポートの1つを含む場合、ポートベクタ全体に対するフレームポインタのキュー入れはポートベクタ内で表わされる最長レイテンシスイッチモードのそれになる。たとえば、フレームが第1または第2のモードのポートによって受信され、そのマルチコピー転送ポートベクタが管理ポート30を含めば、スイッチモードは第3のモードである。この場合、フレームが完全に受信されて初めてフレームポインタのコピーが全出力キュー74に入れられる。
スイッチモードをここでより詳細に説明する。入力(すなわち、受信)ポートに当てはまるスイッチモードが転送レイテンシ(一旦スイッチ12がフレームを受信し始めるとどの程度後にスイッチ12がフレームを転送するか)と出力ポートへのフラグメント/エラー伝搬を低減する能力とを決定する。第2の中間レイテンシモードは各ポートに対するデフォルトであるが、スイッチモードはレジスタ60ではポートごとにプログラム可能である。
これら3つのモデルのすべてにおいて、内部MACポートの受信FIFO52で受信されるフレームデータはできるだけ早く外部メモリ52内のバッファ140に転送される。ほぼ同時に、ルールチェッカ42または58が宛先アドレスおよびソースアドレス、受信ポート数、フレームポインタ、ならびにいくつかの付加的情報を受信し、適切なルックアップを行なう。一旦ルックアップが完了すると、ルールチェッカ42または58はフレームポインタおよび転送ポートベクタをポートベクタFIFO70に戻す。
ポートベクタFIFOはポートベクタ内で識別される出力ポートのための出力キュー74の書込側76にフレームポインタを入れる。受信ポートのスイッチモードは、ポートベクタFIFO70がポートベクタ(およびフレームポインタ)を受取るときから、それがフレームポインタを出力キュー74に入れるときまでの間のレイテンシを規定する。これは以下の3つのモードに対して説明される。一旦フレームポインタが出力キュー74の読出側78に移動すると、バッファマネージャ72はフレームポインタを読出し、送信をスケジュールする。バッファマネージャはフレームポインタによって特定されるアドレスからフレームデータを移動させ始める。一旦MACポートの送信FIFO54がその開始点に設定されると(そして、データ送信のために媒体が使用可能であると想定すると)、フレーム送信が始まる。
第1のモードは最低のレイテンシを与えるように設計される。フレームはライン−レート速度で受信され、転送される。この第1のモードにおいてはネットワークエラーに対する保護がなく、これは、フレームがフラグメント(すなわち、<64バイトの長さ)であるかCRCエラーを含むかが判断され得る前にフレームが送信のためにキューに入れられるためである。第1のモードにおいて、フレーム受信は出力ポートでのフレーム送信が始まるまでに完了していないかもしれない。受信フレームが短すぎる場合または無効なCRCで終る場合、受信MACは外部メモリ36内のバッファヘッダ142に印を付けてこれらの条件を示す。送信MACは、後に短すぎるものか無効なCRCで終るフレームの送信が始まればMACが無効なCRCを発生することを保証する。送信MACがフレーム送信を始めておらず、バッファヘッダ142が短すぎるものか無効なCRCで終るフレームを示している場合、バッファマネージャ72はフレームを出力ポートへと転送しない。
第2のモードはフレームを転送するための低レイテンシとあるネットワークエラーに対する保護とを与える。フレームは64バイト以上が受信された後に受信され、転送される。これによってスイッチ12がフレームのフラグメントをフィルタ処理する(すなわち、転送しない)ことが可能となるが、これは64バイトよりも大きいCRCエラーフレームを完全にはフィルタ処理しない。
第2のモードにおいては、受信MACで64バイトのしきい値を達成したフレームのフレームポインタは適切な出力キュー74に入れられる。最小の64バイトのしきい値を達成できないフレームはデリートされ、それらのフレームポインタは出力キュー74に入れられない。64バイト以上の受信フレームが無効なCRCで終れば、受信MACは外部メモリ36内のバッファヘッダ142に印を付けてこの条件を示す。後に無効なCRCで終る64バイト以上のフレームの送信が開始されるときには、送信MACは不良なCRCで送信を終了する。送信MACがフレーム送信を開始しておらず、バッファヘッダ142が無効なCRCで終るフレーム(64ビット以上)であることを示している場合、バッファマネージャはフレームポインタを(単一コピー転送のための)リクレームキュー98または(マルチコピー転送のための)マルチコピーキュー96へと出力ポート74への転送なしに戻す。
第3のモードは3つのモードの中で最高レベルのネットワークエラー保護を与えるがより高い転送レイテンシを有するストアアンドフォワードモードである。フレームは、スイッチ12がそれらを出力ポートに転送する前に完全に受信される。このモードでは、スイッチ12は転送の前に全てのフラグメントおよびCRCエラーフレームをふるい分ける。第3のモードにおいて、一旦有効フレームが受信側でうまく完了すると(すなわち、有効なCRCを持ち、64バイト以上であると)、フレームポインタが適切な出力キュー74に入れられる。受信エラー(無効CRC、短すぎるもの(>64バイト)等)で終るフレームはデリートされ、それらのフレームポインタは出力キュー74に入れられない。
ポートベクタFIFO70は、受信ポートの選択されたモードと受信されたデータ量とに依存してポートベクタを出力キュー74に入れる決定を行なう。上述の実施例では、3つのしきい値があるが他の実施例では異なる数のしきい値が存在する。例示的実施例では、これらのしきい値は1)n<64バイトであるようなnバイト(たとえば6バイト)の受信、2)64バイトの受信、および3)全フレームの受信である。
本発明はしきい値に基づいてフレームを出力キュー74へと転送する。ポートベクタFIFO70は、受信されるデータタイプの量とポートがプログラムされたモードとに基づいて送信シーケンスを再び順序付ける。例示的実施例は受信されたデータの量に基づいて転送の決定を行なうが、本発明の他の実施例では、受信されるデータタイプのような他の要因に基づいて転送の決定が行われる。
本発明の転送方式を実施するにあたって、バッファマネージャ72はフレームポインタを受信ポートと関連付ける、キャッシュメモリ(CAM)161内のテーブル160を維持する。ポートベクタFIFO70が新しいポートベクタおよびフレームポインタをルールチェッカ42または58から受信するたびに、それは関連付けを行なって受信ポートがフレーム受信を終えたかどうかを判断し、終えていなければどれほどのフレームが既に受信されているかを判断する。ポートベクタFIFO70が受信ポートのアイデンティティに関する情報をルールチェッカ42または58から受信することはない。ポートベクタが受取る唯一のポートの何らかの識別を与える情報はフレームポインタである。
ポートベクタFIFO70はフレームポインタでアドレステーブル160に問合せをする。フレームがなお受信されていればアドレステーブルは受信ポートを戻し、またはアドレステーブル160はフレームポインタを見つけることができないときはフレームが既に受信されたことを意味する。一旦フレームが完全に受信されると、フレームポインタがアドレステーブル160から移動される。これは、第3のしきい値(フレーム完了)が満たされたことを意味する。したがって、フレームポインタは直ちに出力キュー74に入れられ得る。
アドレステーブル160が受信ポートを戻せば、ポートベクタFIFO70がフレームポインタおよび関連の情報を保持領域162に入れ、その受信ポートからの2信号を監視し始める。これらの2信号は3つの事象のうちの1つを示す。第1の事象はポートがnバイトを受信するときに示される。その時点で、そのポートが第1のモードにあれば、ポートベクタFIFO70がフレームポインタを適切な出力キュー74に送ることによってその処理を開始する。受信ポートが第1のモードになければ、ポートベクタFIFO70は第2の事象の発生を示す信号が受信されるまで待機する。このポートが第2のモードにあれば、ポートベクタFIFO70はフレームポインタを保持領域162から解放し、適切な出力キュー74に入れる。最後に、受信ポートが第3のモードにあれば、ポートベクタFIFO70はフレームが完全であることを示すフラグの受信を待つ。各受信ポート(図14の参照番号50)がこのフラグを維持し、この情報をポートベクタFIFO70に提供する。フレームポインタに関連付けられたポートの決定はポートベクタFIFO70次第である。ポートベクタFIFO70は各ポートのモードを識別する情報を維持する。要約すると、フレームポインタが受信されると、ポートベクタFIFO70は最初にバッファマネージャ72のアドレステーブル160に問合せをして受信ポートを決定し、その受信ポートのためのモードを決定し、受信ポートからのフラグを監視し、モードおよびフラグに従ってフレームポインタを解放する。
バッファマネージャ72はこの発明のスイッチ12においてさまざまな機能を果たす。バッファマネージャ72はこれらの機能を実現するための制御論理および/またはソフトウェアを含み、バッファマネジャ72の機能に関する上記の説明があれば当業者なら容易に実現できる。
本発明が詳細に説明され、図示されたが、これは図示および例示のためのものにすぎないことが理解されるべきである。本発明は前掲の実施例に限定されず、添付のクレームに規定される本発明の範疇に入るすべての変形、修正および等価物を含む。

Claims (13)

  1. 複数の受信および送信ポートを有するデバイスからのデータの転送の開始を、デバイスで受信したデータの関数として制御するための方法であって、
    前記デバイスからの前記データの転送の開始前に、前記受信ポートによって受信すべきデータを示すモードを前記各受信ポートに独立して指定するステップを含み、前記指定するステップは、少なくとも2つのモードから前記モードを選択するステップを含み、少なくとも第1のモードでは、特定のデータ量のデータ受信したとの判断および前記受信される特定のデータ量のデータが有効な巡回冗長検査(CRC)で終わったとの判断がなされる前に、1組のデータの転送が開始され、少なくとも第2のモードでは、特定のデータ量のデータ受信したとの判断がなされた後であって、かつ前記受信された特定のデータ量のデータが有効な巡回冗長検査(CRC)で終わったとの判断がなされる前に、1組のデータの転送が開始され、さらに
    前記受信ポートで1組のデータが受信されている間に、前記1組のデータを受信している前記受信ポートを判別するステップと、
    前記1組のデータを受信している前記受信ポートの、指定されたモードを決定するステップと、
    前記受信ポートの、指定されたモードおよび前記受信ポートで受信したデータに従って前記組のデータを転送するステップとを含む、方法。
  2. 指定するステップが、少なくとも2つのモードから前記モードを選択するステップを含み、前記モードは、前記デバイスからの前記データの転送の開始前に前記ポートで受信すべきトラヒックのタイプを示す、請求項1に記載の方法。
  3. 記受信ポートを判別するステップが、受信ポートと、前記受信ポートで受信された組のデータを識別するデータ識別子とを関連づけ、前記データ識別子を用いて、前記関連づけられた受信ポートを決定するように構成されたテーブルにアクセスするステップを含む、請求項1に記載の方法。
  4. 前記受信ポートの前記指定モードを決定するステップが、前記決定された受信ポートに関する前記指定されたモードを取出すように、ストアされた情報にアクセスするステップを含む、請求項3に記載の方法。
  5. 前記組のデータを転送するステップが、前記決定された受信ポートで受信したデータの量を監視し、前記受信ポートで受信したデータの量と、前記決定された受信ポートの前記指定モードに関するしきい量とを比較し、前記決定された受信ポートで受信したデータ量が前記決定された受信ポートに関する前記指定モードのしきい量に達したときに前記組のデータを転送するステップを含む、請求項4に記載の方法。
  6. 前記デバイスが、パケット交換網のためのマルチポートネットワークスイッチであり、前記組のデータがデータのフレームであり、前記データ識別子が、前記フレームがストアされるバッファをポイントするフレームポインタであり、前記受信ポートの各々にモードを指定するステップが、前記フレームが受信される際にフレームが転送される前記第1のモードと、前記受信ポートにおいて第1のしきい量のデータが受信された後にフレームが転送される前記第2のモードと、前記受信ポートでフレーム全体が受信された後にフレームが転送される第3のモードのいずれかを選択するステップを含む、請求項5に記載の方法。
  7. 前記第1のしきい値が64バイトである、請求項6に記載の方法。
  8. 前記マルチポートネットワークスイッチが、保持領域を含むポートベクタFIFOを含み、前記方法は、前記フレームが受信される際に前記フレームポインタを前記ポートベクタFIFOに転送するステップをさらに含み、前記受信ポートの前記指定モードに従って前記データの組を転送するステップは、前記ポートベクタFIFOによって前記フレームポインタを解放し、前記フレームポインタが解放される前に、前記決定された受信ポートが前記第2のモードである場合には前記決定された受信ポートで前記第1のしきい量のデータが受信されるまで、または前記決定された受信ポートが前記第3のモードである場合には前記決定された受信ポートで前記フレーム全体で受信されるまで、前記保持領域に前記データの組の前記フレームポインタを保持するステップを含む、請求項6に記載の方法。
  9. デバイスで受信したデータの関数として、複数の受信および送信ポートを有するデバイスからのデータの転送を開始するための構成であって、
    データを受信および送信するための複数のポートと、
    前記デバイスのポートのうちの1つで受信した1組のデータの、前記ポートの少なくとも1つからの転送を開始するためにデータ識別子を転送するように構成されたポートベクタFIFOと、
    前記ポートベクタFIFOによって制御される保持領域とを含み、前記保持領域は、データ識別子を受けて、前記ポートベクタFIFOによって解放されるまで前記データ識別子を保持するように構成され、前記データ識別子の解放により、前記データの転送が解しし、前記各データ識別子は、前記デバイスで受信した前記各組のデータを一意に識別し、さらに、
    データ識別子と、前記データ識別子によって識別された前記データの組を受信する受信ポートとをストアして関連づけるアドレステーブルを含み、
    前記ポートベクタFIFOは、前記データ識別子の受信時に、前記データ識別子によって前記アドレステーブルにアクセスし、前記データ識別子によって識別された前記データの組を受信している前記受信ポートを判別し、前記受信ポートのモードを決定し、前記受信ポートのモードおよび前記受信ポートで受信したデータに従って前記データ識別子を解放するように構成され、
    前記モードは、少なくとも、特定のデータ量のデータ受信したとの判断および前記受信される特定のデータ量のデータが有効な巡回冗長検査(CRC)で終わったとの判断がなされる前に前記データ識別子が解放される第1のモードと、特定のデータ量のデータ受信したとの判断がなされた後であって、かつ前記受信された特定のデータ量のデータが有効な巡回冗長検査(CRC)で終わったとの判断がなされる前前記データ識別子が解放される第2のモードとを含む、構成。
  10. 前記デバイスがパケット交換網のためのマルチポートネットワークスイッチであり、前記データの組がデータのフレームであり、前記データ識別子が、前記フレームがストアされるバッファをポイントするフレームポインタであり、前記モードは、フレームが受信されているときに前記フレームが転送される前記第1のモードと、前記受信ポートに第1のしきい量のデータが受信された後にフレームが転送される前記第2のモードと、前記受信ポートに前記フレーム全体が受信された後にフレームが転送される第3のモードとを含む、請求項9に記載の構成。
  11. 前記ポートベクタFIFOが、前記受信ポートで受信したフレームの量を示す信号を前記受信ポートから受信し、前記受信されたフレームの量と、前記フレームを受信する前記受信ポートのモードに関する前記フレームを転送するための要件とを比較するようにさらに構成される、請求項10に記載の構成。
  12. 前記ポートベクタFIFOが、前記受信ポートが前記第1のモードにある場合には前記フレームポインタを直ちに解放し、前記受信ポートが前記第2のモードにある場合には、前記第1のしきい量のデータが前記受信ポートで受信されるまで、または前記受信ポートが前記第3のモードにある場合には前記フレーム全体が前記受信ポートで受信されるまで、前記フレームポインタを解放する前に、前記保持領域に前記フレームの前記フレームポインタを保持するようにさらに構成される、請求項11に記載の構成。
  13. 前記ポートベクタFIFOが、前記フレームに関する前記送信ポートを決定し、前記受信ポートが前記送信ポートの前記ビット送信レートよりも低いビット送信レートを有する場合には、前記フレーム全体が受信された後にのみ前記フレームを解放するようにさらに構成される、請求項12に記載の構成。
JP53581298A 1997-02-14 1998-02-03 受信データの関数としてデータの送信の開始を制御するための方法および装置 Expired - Lifetime JP4541454B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US3802597P 1997-02-14 1997-02-14
US08/992,811 1997-12-18
US08/992,811 US6115387A (en) 1997-02-14 1997-12-18 Method and apparatus for controlling initiation of transmission of data as a function of received data
US60/038,025 1997-12-18
PCT/US1998/002196 WO1998036531A1 (en) 1997-02-14 1998-02-03 Method and apparatus for controlling initiation of transmission of data as a function of received data

Publications (3)

Publication Number Publication Date
JP2001511981A JP2001511981A (ja) 2001-08-14
JP2001511981A5 JP2001511981A5 (ja) 2005-09-08
JP4541454B2 true JP4541454B2 (ja) 2010-09-08

Family

ID=26714739

Family Applications (1)

Application Number Title Priority Date Filing Date
JP53581298A Expired - Lifetime JP4541454B2 (ja) 1997-02-14 1998-02-03 受信データの関数としてデータの送信の開始を制御するための方法および装置

Country Status (5)

Country Link
US (1) US6115387A (ja)
EP (1) EP0960505B1 (ja)
JP (1) JP4541454B2 (ja)
DE (1) DE69803276T2 (ja)
WO (1) WO1998036531A1 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10307777A (ja) * 1997-05-06 1998-11-17 Yazaki Corp 状態情報の管理方法及びそのシステム
US6662234B2 (en) 1998-03-26 2003-12-09 National Semiconductor Corporation Transmitting data from a host computer in a reduced power state by an isolation block that disconnects the media access control layer from the physical layer
US7012896B1 (en) 1998-04-20 2006-03-14 Alcatel Dedicated bandwidth data communication switch backplane
US6314106B1 (en) * 1998-04-20 2001-11-06 Alcatel Internetworking, Inc. Receive processing for dedicated bandwidth data communication switch backplane
US7369550B1 (en) * 1999-04-22 2008-05-06 Advanced Micro Devices Method and apparatus for locking a table in a network switch
US6529503B1 (en) * 1999-05-21 2003-03-04 Advanced Micro Devices, Inc. Apparatus and method for storing header information in a network switch
US6553027B1 (en) * 1999-05-21 2003-04-22 Advanced Micro Devices, Inc. Apparatus and method for cascading multiple network switch devices
DE69942093D1 (de) * 1999-06-30 2010-04-15 Texas Instruments Inc Verwaltungsschema von Rundsendung
US6810044B1 (en) 1999-12-17 2004-10-26 Texas Instruments Incorporated Order broadcast management (IOBMAN) scheme
US6434676B1 (en) * 1999-12-21 2002-08-13 Intel Corporation FIFO with random re-read support and its application
US6697812B1 (en) * 2000-01-18 2004-02-24 Peter Martin Method and system for eliminating error when packing or packaging sets of serialized products or otherwise identifiable products
US6876664B1 (en) * 2000-04-03 2005-04-05 International Business Machines Corporation Asynchronous data buffer and a method of use thereof
US7200666B1 (en) * 2000-07-07 2007-04-03 International Business Machines Corporation Live connection enhancement for data source interface
US7079533B1 (en) * 2001-05-02 2006-07-18 Advanced Micro Devices, Inc. Systems and methods for bypassing packet lookups
US20050100019A1 (en) * 2003-11-10 2005-05-12 Sahita Ravi L. Rule based packet processing engine
US7924711B2 (en) * 2004-10-20 2011-04-12 Qualcomm Incorporated Method and apparatus to adaptively manage end-to-end voice over internet protocol (VolP) media latency
JP2006323729A (ja) * 2005-05-20 2006-11-30 Hitachi Ltd マルチパス制御をする装置及びシステム
US8438239B2 (en) * 2006-05-11 2013-05-07 Vocollect, Inc. Apparatus and method for sharing data among multiple terminal devices
US8681807B1 (en) 2007-05-09 2014-03-25 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for switch port memory allocation
US8924836B2 (en) 2008-10-30 2014-12-30 Kabushiki Kaisha Toshiba Data receiving apparatus, data receiving method, and computer-readable recording medium
JP4922279B2 (ja) * 2008-10-30 2012-04-25 株式会社東芝 データ受信装置、データ受信方法、及びデータ受信プログラム
US8625422B1 (en) 2012-12-20 2014-01-07 Unbound Networks Parallel processing using multi-core processor

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR900006793B1 (ko) * 1984-10-18 1990-09-21 휴우즈 에어크라프트 캄파니 패킷 스위치 다중 대기행렬 NxM 스위치 노오드 및 처리 방법
JP3064650B2 (ja) * 1992-03-27 2000-07-12 株式会社日立製作所 同報通信装置
US5309426A (en) * 1993-01-26 1994-05-03 International Business Machines Corporation High performance cascadable simplex switch
US5515376A (en) * 1993-07-19 1996-05-07 Alantec, Inc. Communication apparatus and methods
US5598581A (en) * 1993-08-06 1997-01-28 Cisco Sytems, Inc. Variable latency cut through bridge for forwarding packets in response to user's manual adjustment of variable latency threshold point while the bridge is operating
US5521913A (en) * 1994-09-12 1996-05-28 Amber Wave Systems, Inc. Distributed processing ethernet switch with adaptive cut-through switching
US5610745A (en) * 1995-10-26 1997-03-11 Hewlett-Packard Co. Method and apparatus for tracking buffer availability
US5754791A (en) * 1996-03-25 1998-05-19 I-Cube, Inc. Hierarchical address translation system for a network switch
US5784003A (en) * 1996-03-25 1998-07-21 I-Cube, Inc. Network switch with broadcast support
US5862338A (en) * 1996-12-30 1999-01-19 Compaq Computer Corporation Polling system that determines the status of network ports and that stores values indicative thereof

Also Published As

Publication number Publication date
EP0960505B1 (en) 2001-11-21
DE69803276D1 (de) 2002-02-21
DE69803276T2 (de) 2002-07-18
EP0960505A1 (en) 1999-12-01
US6115387A (en) 2000-09-05
WO1998036531A1 (en) 1998-08-20
JP2001511981A (ja) 2001-08-14

Similar Documents

Publication Publication Date Title
JP4603102B2 (ja) ネットワークスイッチ内のブロックされた出力キューに関するパケットを選択的に廃棄するための方法および装置
JP4615030B2 (ja) バッファを再要求するための方法および装置
JP4078446B2 (ja) 探索可能なキャッシュ領域を備えるマルチコピーキュー構造
JP4078445B2 (ja) データ識別子を複製することによって複数のコピーを送信するための方法および装置
US6175902B1 (en) Method and apparatus for maintaining a time order by physical ordering in a memory
JP4541454B2 (ja) 受信データの関数としてデータの送信の開始を制御するための方法および装置
US6233244B1 (en) Method and apparatus for reclaiming buffers
US6487212B1 (en) Queuing structure and method for prioritization of frames in a network switch
US6091707A (en) Methods and apparatus for preventing under-flow conditions in a multiple-port switching device
US6504846B1 (en) Method and apparatus for reclaiming buffers using a single buffer bit
US6618390B1 (en) Method and apparatus for maintaining randomly accessible free buffer information for a network switch
JP4452781B2 (ja) メモリ内の物理的順序によって時間順を維持するための方法および装置
EP0960510B1 (en) Split-queue architecture and method of queuing

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050112

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070515

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070809

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071211

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080304

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080424

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20080501

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100209

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100215

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130702

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term