DE60203358T2 - Systeme, welche Paketschnittstellen und Paket-DMA (Direct Memory Access) Schaltkreise beinhalten, um Paketströme zu teilen und zusammenzusetzen - Google Patents

Systeme, welche Paketschnittstellen und Paket-DMA (Direct Memory Access) Schaltkreise beinhalten, um Paketströme zu teilen und zusammenzusetzen Download PDF

Info

Publication number
DE60203358T2
DE60203358T2 DE60203358T DE60203358T DE60203358T2 DE 60203358 T2 DE60203358 T2 DE 60203358T2 DE 60203358 T DE60203358 T DE 60203358T DE 60203358 T DE60203358 T DE 60203358T DE 60203358 T2 DE60203358 T2 DE 60203358T2
Authority
DE
Germany
Prior art keywords
packet
circuit
packets
destination
receiving circuit
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
DE60203358T
Other languages
English (en)
Other versions
DE60203358D1 (de
Inventor
Barton Sano
Laurent R. Moll
Manu Gulati
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.)
Broadcom Corp
Original Assignee
Broadcom Corp
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 Broadcom Corp filed Critical Broadcom Corp
Publication of DE60203358D1 publication Critical patent/DE60203358D1/de
Application granted granted Critical
Publication of DE60203358T2 publication Critical patent/DE60203358T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/40Flow control; Congestion control using split connections

Landscapes

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

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft das Gebiet der Paketverarbeitung und insbesondere integrierte Schaltungen zum Verarbeiten von Paketen.
  • 2. Beschreibung der verwandten Fachgeb
  • Da Computersysteme und andere elektronische Systeme immer mehr vernetzt werden, wird auch die Paketverarbeitung immer wichtiger.
  • Im allgemeinen werden Pakete dazu verwendet, zwischen vernetzten Computersystemen und elektronischen Systemen zu kommunizieren. Somit muss jedes vernetzte System Pakete empfangen und übertragen und muss die Pakete verarbeiten, die diesem System zugeführt werden, um zu bestimmen, was zu diesem System übertragen wird.
  • Typischerweise umfasst jedes System eine oder mehrere Schnittstellen, auf denen Pakete übertragen und empfangen werden.
  • Pakete, die auf jeder Schnittstelle empfangen werden (ein "Paketstrom"), werden in dem System verarbeitet. Wenn Pakete an mehreren Punkten in dem System verarbeitet werden können (oder wenn Pakete durch das System geroutet werden können, ohne dass sie zusätzlich in dem System verarbeitet werden müssen), wird ein Mechanismus zum Teilen (splitting) und Zusammensetzen (merging) der Pakete aus unterschiedlichen Paketströmen benötigt, um andere Paketströme zu bilden (und um Pakete von den Strömen abzutrennen, die in dem System verarbeitet werden sollen).
  • In dem Dokument DE 199 07 200 A ist ein erster Schalter offenbart, der mit mehreren Eingangsports und einem Speicher gekoppelt ist, und ein zweiter Schalter, der mit mehreren Ausgangsports und – ebenfalls – mit einem Speicher gekoppelt ist. Alle Daten, die an den Eingangsports empfangen werden, werden – über den Eingabeschalter – zu dem Speicher übertragen.
  • Das Dokument US 4 788 679 zeigt einen Paketschalter, der eine Vielzahl von ankommenden und abgehenden Leitungen, einen Datenspeicher, und FIFO-(First-In-First-Out)-Speicher besitzt, die in jeder der entsprechenden Eingangs- und Ausgangsschaltungen vorgesehen sind.
  • Gemäß der Erfindung ist eine Vorrichtung, wie sie durch den unabhängigen Anspruch 1 definiert ist, und ein Verfahren vorgesehen, wie es durch den unabhängigen Anspruch 11 definiert ist.
  • Weitere vorteilhafte Merkmale der Erfindung sind in den Unteransprüchen definiert.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die nachfolgende detaillierte Beschreibung bezieht sich auf die beigefügten Zeichnungen, die nun kurz beschrieben werden.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Systems für die Paketverarbeitung.
  • 2 ist ein Blockdiagramm, das eine Ausführungsform von virtuellen Kanälen in dem System von 1 veranschaulicht.
  • 3 ist ein Blockdiagramm einer Ausführungsform eines Paketverarbeitungssystems, das mehrere Systeme wie in 1 gezeigt einschließt.
  • 4 ist ein Blockdiagramm, das ein Beispiel eines Paketflusses für das in 3 gezeigte System veranschaulicht.
  • 5 ist ein Blockdiagramm einer Ausführungsform einer Empfangsschaltung, die in 1 gezeigt ist.
  • 6 ist ein Blockdiagramm einer Ausführungsform einer Hash-and-Route-Schaltung, die in 5 gezeigt ist.
  • 7 ist ein Automatendiagramm, das eine Ausführungsform einer Paketgrenzen-sensitiven Schaltung veranschaulicht.
  • 8 ist ein Blockdiagramm einer Ausführungsform eines Mediums für den Zugriff durch den Computer.
  • GENAUE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Nun wird 1 betrachtet, die ein Blockdiagramm einer Ausführungsform eines Systems 10 zeigt. In der Ausführungsform von 1 umfasst das System 10 einen oder mehrere Prozessoren 12A12N, eine Speichersteuerung 14, eine Paket-DMA-Schaltung 16, einen Schalter 18 und einen Satz von Schnittstellenschaltungen 20A20C. Das System 10 umfasst eine Verbindung 22, mit der die Prozessoren 12A12N, die Speichersteuerung 14 und die Paket-DMA-Schaltung 16 gekoppelt sind. Das System 10 ist durch die Speichersteuerung 14 mit einem Speicher 24 gekoppelt. Die Schnittstellenschaltungen 20A20C umfassen jede eine Empfangsschaltung (Rx-Schaltung) 26A26C und eine Übertragungsschaltung (Tx-Schaltung) 28A28C. Das System 10 ist mit einem Satz von Schnittstellen 30A30C durch die jeweiligen Schnittstellenschaltungen 20A20C gekoppelt. Die Schnittstellenschaltungen 20A20C sind mit dem Schalter 18 gekoppelt, der außerdem mit der Paket-DMA-Schaltung 16 gekoppelt ist.
  • Die Schnittstellenschaltungen 20A20C sind jeweils so aufgebaut, dass sie Pakete auf den jeweiligen Schnittstellen 30A30C empfangen und übertragen, mit denen sie verbunden sind. Die Rx-Schaltungen 26A26C handhaben das Empfangen von Paketen von den Schnittstellen 30A30C, und die Tx-Schaltungen 28A28C handhaben die Übertragung von Paketen auf den Schnittstellen 30A30C.
  • Jede der Schnittstellen 30A30C ist wenigstens so definiert, dass sie Paketdaten überträgt. Zum Beispiel können die Schnittstellen in einigen Ausführungsformen Systempaketschnittstellen (SPI) gemäß einem Level der SPI-Spezifikation sein, die vom Optical Internetworking Forum veröffentlicht wurde (z.B. Level 3, Level 4 oder Level 5). In einer speziellen Ausführungsform können die Schnittstellen SPI-4-Phase-2-Schnittstellen sein. In anderen Ausführungsformen können die Schnittstellen HyperTransportTM-(HT)-Schnittstellen sein, die Paketdaten gemäß einer Paket-über-HyperTransport-(PoHT)-Erweiterung der HT-Schnittstelle übertragen können. In der veranschaulichten Ausführungsform kann jede Schnittstellenschaltung 20A20C so aufbaubar sein, dass sie entweder auf der SPI-4-Schnittstelle oder auf der HT-Schnittstelle kommunizieren kann. Jede Schnittstellenschaltung 20A20C kann individuell programmierbar sein, wobei verschiedene Kombinationen aus den HT- und den SPI-4-Schnittstellen als Schnittstellen 30A30C erlaubt sind. Das Programmieren kann auf jede Art und Weise durchgeführt werden (z.B. Abtasten bestimmter Signale während des Rücksetzens, Verschieben der Werte in die Konfigurationsregister (nicht gezeigt) während des Rücksetzens, Programmieren der Schnittstellen mit Konfigurationsraumbefehlen nach dem Rücksetzen, Pins, die extern belegt werden, um die gewünschte Programmierung anzugeben, etc.). Andere Ausführungsformen können jede Schnittstelle verwenden, die in der Lage ist, Paketdaten zu übertragen (z.B. das Media Independent Interface (MII) oder die Gigabit MII (GMII)-Schnittstellen, X.25, Frame Relay, asynchroner Transfermodus (ATM), etc.). Die Schnittstellen können Paketdaten direkt übertragen (z.B. Übertragen der Paketdaten mit verschiedenen Steuerinformationen, die den Start des Pakets, das Ende des Pakets, etc. anzeigen) oder indirekt übertragen (z.B. Übertragen der Paketdaten als eine Nutzlast eines Befehls, wie z.B. PoHT). So wie sie hier verwendet wird, umfasst eine Schnittstellenschaltung jegliche Schaltungen, die so aufgebaut sind, dass sie auf einer Schnittstelle gemäß dem Protokoll kommunizieren können, das für die Schnittstelle definiert ist. Die Schnittstellenschaltung kann Empfangsschaltungen umfassen, die so aufgebaut sind, dass sie Kommunikationen auf der Schnittstelle empfangen können und die empfangenen Kommunikationen an andere Schaltungen übertragen können, die sich in dem System befinden, das die Schnittstellenschaltung umfasst. Die Schnittstellenschaltung kann auch Übertragungsschaltungen umfassen, die so aufgebaut sind, dass sie Kommunikationen von den anderen Schaltungen in dem System empfangen können und so aufgebaut sind, dass sie die Kommunikationen auf der Schnittstelle übertragen.
  • Im allgemeinen ist jede der Schnittstellenschaltungen 20A20C (und noch genauer die Rx-Schaltungen 26A26C in der veranschaulichten Ausführungsform) so aufgebaut, dass sie einen Paketstrom auf der entsprechenden Schnittstelle empfangen kann. Ein Paketstrom ist eine Vielzahl von Paketen, die über der Zeit auf der Schnittstelle empfangen werden. Für jedes Paket in dem Strom kann die empfangende Rx-Schaltung 26A26C ein Ziel für das Paket in dem System 10 bestimmen. Das Ziel kann eine der Tx-Schaltungen 28A28C sein oder kann die Paket-DMA-Schaltung 16 sein. Unterschiedliche Pakete in dem Strom können unterschiedliche Ziele aufweisen. Somit können die Rx-Schaltungen 26A26C (zusammen mit dem Schalter 18) einen empfangenen Paketstrom unter einer Vielzahl von Zielen aufteilen.
  • Jede der Schnittstellenschaltungen 20A20C (und noch genauer die Tx-Schaltungen 28A28C in der veranschaulichten Ausführungsform) ist so aufgebaut, dass sie einen Paketstrom auf der entsprechenden Schnittstelle übertragen kann. Der Paketstrom kann von mehreren Quellen innerhalb des Systems 10 gesourced werden. Zum Beispiel können die Rx-Schaltungen 26A26C die Quelle für Pakete sein (z.B. Pakete, die auf den entsprechenden Schnittstellen empfangen werden, für die das Ziel so bestimmt ist, dass es eine Tx-Schaltung 28A28C ist). Die Paket-DMA-Schaltung 16 kann ebenfalls eine Quelle für Pakete sein (z.B. Pakete, die von Software generiert werden, die auf den Prozessoren 12A12N ausgeführt wird, oder Pakete, die von den Schnittstellen empfangen werden, von der Software verarbeitet werden und zu der Paket-DMA-Schaltung 16 für die erneute Übertragung zurückgeführt werden). Der Paketstrom, der von einer gegebenen Tx-Schaltung 28A28C übertragen wird, kann Pakete umfassen, die aus mehreren Paketquellen zusammengesetzt wurden.
  • Das System 10 kann eine flexible Struktur für die Verarbeitung von Paketen und für das Routen der Pakete vorsehen, ohne dass eine Verarbeitung durch die Prozessoren 12A12N erfolgt. Mit anderen Worten, Pakete können durch das System 10 geroutet werden, ohne dass sie die Paket-DMA-Schaltung 16 berühren und dass sie zu der Paket-DMA-Schaltung 16 gesandt oder von dieser gesourced werden. Andere Pakete können zu der Paket-DMA-Schaltung 16 gesandt oder von dieser gesourced werden, und diese Pakete können von Paketströmen abgespalten werden oder mit anderen Paketen, die die Paket-DMA-Schaltung 16 nicht berühren, zu Paketströmen zusammengesetzt werden. In einer Ausführungsform können die Rx-Schaltungen 26A26C so programmierbar sein, dass sie Ziele für Pakete auf der Grundlage eines oder mehrerer Paketattribute auswählen. Zum Beispiel können die Pakete auf den Schnittstellen in einem virtuellen Kanal auf dieser Schnittstelle übertragen werden. Der virtuelle Kanal kann ein Paketattribut sein, das für die Auswahl eines Ziels verwendet wird. Außerdem können die Rx-Schaltungen 26A26C so programmierbar sein, dass sie ein Paketfeld oder mehrere Paketfelder auswählen, um diese bei der Bestimmung eines Ziels zu benutzen. Für Pakete, die von Software generiert werden, kann die Software ein Ziel für das Paket auswählen (z.B. durch das Auswählen einer Ausgabewarteschlange in der Paket-DMA-Schaltung 16, die einer gegebenen Tx-Schaltung 28A28C und einem virtuellen Kanal auf der entsprechenden Schnittstelle zugeordnet ist).
  • Zwei oder mehr Instantiationen des Systems 10 können zusammen gekoppelt sein, um Paketverarbeitungssysteme zu bilden, in denen Pakete zwischen den Systemen sowie auch den Paketquellen-/-zieleinrichtungen geroutet werden. Ein Beispiel für ein derartiges Paketverarbeitungssystem ist in 3 gezeigt und wird unten noch genauer beschrieben.
  • Wenn die Rx-Schaltung 26A26C ein Paket empfängt und bestimmt, dass das Ziel für das Paket eine Tx-Schaltung 28A28C ist, dann kann die Rx-Schaltung 26A26C das Paket durch den Schalter 18 zu der Tx-Schaltung 28A28C übertragen. Das Paket darf weder zu dem Speicher übertragen werden (d.h., es darf nicht zu der Paket-DMA-Schaltung 16 übertragen werden), noch dürfen die Prozessoren 12A12N darauf einwirken. Somit können die Speicherbandbreite, die Speicherung und die Prozessorzeit dazu verwendet werden, um Pakete zu verarbeiten, die nicht automatisch von einer Quelle zu einem Ziel geroutet werden (von den Rx-Schaltungen und den Tx-Schaltungen ohne Verarbeitung durch die Prozessoren 12A12N oder ohne durch die Paket-DMA-Schaltung 16 zu wandern). In Paketverarbeitungssystemen, die mehrere Systeme 10 einschließen, kann ein Paket von einer Rx-Schaltung 26A26C zu einer Tx-Schaltung 28A28C geroutet werden, die mit einer Schnittstelle des anderen Systems 10 gekoppelt ist, und die Rx-Schaltung 28A28C in dem anderen System 10, die mit dieser Schnittstelle gekoppelt ist, kann bestimmen, dass das Ziel des Pakets die Paket-DMA-Schaltung 16 in dem anderen System 10 ist. Alternativ dazu kann ein Paket durch eine oder mehrere Rx- und Tx-Schaltungen 26A26C bzw. 28A28C von einer Paketquelleneinrichtung zu einer Paketzieleinrichtung geroutet werden, ohne dass in den Systemen 10 eine Verarbeitung durch die Prozessoren 12A12N erfolgt.
  • Die Paket-DMA-Schaltung 16 umfasst Schaltungsanordnungen, die von den Schnittstellenschaltungen 20A20C gemeinsam benutzt werden. Die Schaltungsanordnung der Paket-DMA-Schaltung 16 kommuniziert Pakete zwischen den Schnittstellenschaltungen 20A20C und dem Speicher 24. Die Paket-DMA-Schaltung kann Schreibbefehle zu der Speichersteuerung 14 generieren, um empfangene Pakete in den Speicher 24 zu schreiben, und kann Lesebefehle generieren, um die Pakete aus dem Speicher 24 für die Übertragung durch eine der Schnittstellenschaltungen 20A20C auszulesen. In einigen Ausführungsformen kann die Paket-DMA-Schaltung 16 mit Deskriptoren versehen sein, die die Speicherstellen für das Lesen und das Schreiben der Pakete anzeigen. Die Paket-DMA-Schaltung 16 kann ebenfalls Lesebefehle und Schreibbefehle generieren, um die Deskriptoren zu lesen und zu schreiben.
  • Pakete, die in dem Speicher von der Paket-DMA-Schaltung 16 gespeichert werden, können durch Software verarbeitet werden, die von den Prozessoren 12A12N ausgeführt wird. Die Software kann bestimmen, dass ein gegebenes Paket in dem System 10 beendet wird. Alternativ dazu können die Prozessoren 12A12N bestimmen, dass das Paket auf einer der Schnittstellen 30A30C zurückübertragen wird, und können das Paket für die Übertragung durch die Paket-DMA-Schaltung 16 vorbereiten. Das Paket kann von der Software modifiziert worden sein, oder es kann unmodifiziert sein. Außerdem kann die Software Pakete generieren, die übertragen werden sollen. In jedem dieser Fälle kann die Software die Paket-DMA-Schaltung 16 von dem Paket und seinem Platz in dem Speicher 24 informieren, so dass die Paket-DMA-Schaltung 16 das Paket aus dem Speicher 24 zur Übertragung zu der Schnittstellenschaltung 20A20C auslesen kann, die mit der Schnittstelle 30A30C gekoppelt ist, auf der das Paket übertragen werden soll.
  • Der Schalter 18 kann selektiv die Schnittstellenschaltungen 20A20C (und vor allem die Rx-Schaltungen 26A26C in der veranschaulichten Ausführungsform) mit anderen Schnittstellenschaltungen 20A20C (und vor allem den Tx-Schaltungen 28A28C in der veranschaulichten Ausführungsform) oder der Paket-DMA-Schaltung 16 koppeln, um die empfangenen Paketdaten zu übertragen. Der Schalter 18 kann auch selektiv die Paket-DMA-Schaltung 16 mit den Schnittstellenschaltungen 20A20C (und vor allem den Tx-Schaltungen 28A28C in der veranschaulichten Ausführungsform) koppeln, um die Paketdaten von der Paket-DMA-Schaltung 16 zu den Schnittstellenschaltungen 20A20C für die Übertragung auf der entsprechenden Schnittstelle 30A30C zu transferieren. Der Schalter 18 kann Anforderungs-/Gewährungsschnittstellen für jede der Schnittstellenschaltungen 20A20C und die Paket-DMA-Schaltung 16 aufweisen, um die Transfers anzufordern und diese Transfers zu gewähren. Der Schalter 18 kann einen Eingabepfad von jeder Quelle (die Rx-Schaltungen 26A26C und die Paket-DMA-Schaltung 16) sowie einen Ausgabepfad zu jedem Ziel (die Tx-Schaltungen 28A28C und die Paket-DMA-Schaltung 16) aufweisen, und er kann einen gewährten Eingabepfad mit einem gewährten Ausgabepfad für die Übertragung der Paketdaten koppeln. Die Koppelungen können dann für den nächsten gewährten Eingabepfad und den gewährten Ausgabepfad geändert werden. Mehrere unabhängige Eingabepfad-/Ausgabepfad-Gewährungen können gleichzeitig auftreten.
  • In einer Ausführungsform können die Schnittstellen 30A30C einen Satz von virtuellen Kanälen unterstützen, in denen die Pakete übertragen werden. Jeder virtuelle Kanal ist so definiert, dass er unabhängig von den anderen virtuellen Kanälen fließt, selbst wenn die virtuellen Kanäle eventuell bestimmte physikalische Ressourcen gemeinsam benutzen (z.B. die Schnittstelle 30A30C, auf der die Pakete fließen). Diese virtuellen Kanäle können internen virtuellen Kanälen zugeordnet sein (die hier als virtuelle Schalterkanäle (switch virtual channels) bezeichnet werden). Der Schalter 18 kann eine Sensitivität bezüglich der virtuellen Kanäle aufweisen. Das heißt, der Schalter 18 kann ein Koppeln zwischen einer Quelle und einem Ziel nicht nur auf der Grundlage der Fähigkeit der Quelle, Daten zu übertragen, und des Ziels, Daten zu empfangen, sondern auch auf der Grundlage der Fähigkeit der Quelle, Daten in einem bestimmten virtuellen Schalterkanal zu übertragen, und des Ziels, Daten auf diesem virtuellen Schalterkanal zu empfangen, gewähren. Somit können Anforderungen von den Quellen das Ziel und den virtuellen Kanal anzeigen, auf dem die Daten zu übertragen sind, und Anforderungen von dem Ziel können den virtuellen Kanal anzeigen, auf dem die Daten empfangen werden können. Außerdem kann der Schalter 18 in einigen Ausführungsformen Eingaben zu einem gegebenen virtuellen Zielkanal auf einer Paketgrenze mergen. Das heißt, wenn zwei Quellen eine Anforderung ausgeben, Paketdaten zu dem gleichen Ziel und virtuellen Kanal zu übertragen, und eine der Quellen eine Gewährung für dieses Ziel und diesen virtuellen Kanal erhalten hat, dann verhindert der Schalter die Gewährung für die andere Quelle für dieses Ziel und den virtuellen Kanal, bis die aktive Quelle eine Paketgrenze erreicht hat.
  • So wie es hier verwendet wird, kann ein "Paket" jegliche Kommunikation zwischen einer Quelle und einem Ziel umfassen, die einen oder mehrere Header einschließt, der die Quelle und das Ziel des Pakets auf verschiedenen Ebenen innerhalb der Quelle und des Ziels definiert, und der eine Datennutzlast umfassen kann. "Pa ketdaten" können jegliche Daten umfassen, die Teil eines Pakets sind, oder können sich auf mehrere Pakete beziehen.
  • Die Prozessoren 12A12N können für jegliche Befehlssatzarchitektur ausgelegt sein, und sie können Programme ausführen, die für diese Befehlssatzarchitektur geschrieben sind. Beispielhafte Befehlssatzarchitekturen können die MIPS-Befehlssatzarchitektur (einschließlich der MIPS-3D- und der MIPS MDMX-anwendungsspezifischen Erweiterungen), die IA-32- oder IA-64 Befehlssatzarchitekturen, die von Intel Corp. entwickelt wurden, die PowerPC-Befehlssatzarchitektur, die Alpha-Befehlssatzarchitektur, die ARM-Befehlssatzarchitektur, oder jede andere Befehlssatzarchitektur umfassen. Das System 10 kann jede Anzahl von Prozessoren umfassen (z.B. nur einen Prozessor, zwei Prozessoren, vier Prozessoren, etc.).
  • Die Speichersteuerung 14 ist so aufgebaut, dass sie auf den Speicher 24 im Ansprechen auf Lese- und Schreibbefehle zugreift, die auf der Verbindung 22 erhalten werden. In einigen Ausführungsformen kann ein L2-Cache mit der Verbindung 22 gekoppelt sein zum Cachen verschiedener Blöcke aus dem Speicher 24 für einen schnelleren Zugriff durch Einrichtungen (Agenten), die mit der Verbindung 22 gekoppelt sind. In derartigen Ausführungsformen kann die Speichersteuerung 14 ein Treffersignal von dem L2-Cache erhalten, und wenn ein Treffer in dem L2-Cache für einen gegebenen Lese-/Schreibbefehl erfasst wird, darf die Speichersteuerung 14 auf diesen Befehl nicht antworten. Im allgemeinen bewirkt ein Lesebefehl einen Transfer von Daten von dem Speicher 24 (obwohl einige Lesebefehle von einem Cache wie einem L2-Cache oder einem Cache in den Prozessoren 12A12N verwaltet werden können), und ein Schreibbefehl bewirkt einen Transfer von Daten zu dem Speicher 24 (obwohl einige Schreibbefehle in einem Cache verwaltet werden können, ähnlich wie bei den Lesebefehlen). Die Speichersteuerung 14 kann so ausgelegt sein, dass sie auf verschiedene Arten von Speicher zugreifen kann. Zum Beispiel kann die Speichersteuerung 14 für einen synchronen dynamischen Direktzugriffsspeicher (SDRAM; synchronous dynamic random access memory) ausgelegt sein, und noch spezieller für ein Doppeldatenraten-(DDR; double data rate)-SDRAM. Alternativ dazu kann die Speichersteuerung 16 für DRAM, DDR-Synchrongrafik-RAM (SGRAM; synchronous graphics RAM), DDR-Schnellzyklus-RAM (FCRAM; fast cycle RAM), DDR-II SDRAM, Rambus DRAM (RDRAM), SRAM, oder jede andere geeignete Speichereinrichtung oder Kombinationen der oben erwähnten Speichereinrichtungen ausgelegt sein.
  • Es sei angemerkt, dass in einigen Ausführungsformen, die einen L2-Cache verwenden, die Paket-DMA-Schaltung 16 so aufgebaut sein kann, dass sie bewirkt, dass Pakete (oder Teile davon, wie z.B. der Teil, der wahrscheinlich den Header umfasst) in den L2-Cache sowie auch den Speicher 24 gespeichert werden. Die Paket-DMA-Schaltung 16 kann bezüglich der Teile der Pakete, die in dem L2-Cache gespeichert werden sollen, programmierbar sein.
  • Die Verbindung 22 kann jede Form von Kommunikationsmedium zwischen den Einrichtungen sein, die mit der Verbindung gekoppelt sind. Zum Beispiel kann die Verbindung 22 in verschiedenen Ausführungsformen gemeinsam benutzte Busse, Kreuzschienen-(Crossbar)-Verbindungen, Punkt-zu-Punkt-Verbindungen in einem Ring, Stern oder jeder anderen Topologie, Maschen, Würfel, etc. umfassen. Die Verbindung 22 kann in einigen Ausführungsformen auch eine Speicherung umfassen. In einer bestimmten Ausführungsform kann die Verbindung 22 einen Bus umfassen. In einer Ausführungsform kann der Bus ein Bus mit geteilter Transaktion sein (d.h. er besitzt separate Adress- und Datenphasen). Die Datenphasen verschiedener Transaktionen auf dem Bus können in einer anderen Reihenfolge als die Adressphasen ablaufen. Der Bus kann auch die Kohärenz unterstützen und kann somit eine Antwortphase zur Übertragung von kohärenter Antwortinformation umfassen. Der Bus kann in einer Ausführungsform ein verteiltes Arbitrierungsschema (distributed arbitration scheme) verwenden. In einer Ausführungsform kann bei dem Bus das Pipelining Anwendung finden. Der Bus kann jede geeignete Signalisierungstechnik verwenden. So kann zum Beispiel in einer Ausführungsform die Differentialsignalisierung für die Signalübertragung mit einer hohen Geschwindigkeit verwendet werden. Andere Ausführungsformen können andere Signalisierungstechniken verwenden. Andere Ausführungsformen können Busse mit ungeteilter Transaktion verwenden, die mit einer einzigen Arbitrierung für Adresse und Daten arbitriert werden, und/oder einen Bus mit geteilter Transaktion, in dem der Datenbus nicht ausdrücklich arbitriert wird. Entsprechend der Designauswahl kann entweder ein zentrales Arbitrierungsschema oder ein verteiltes Arbitrierungsschema verwendet werden. Außerdem kann bei dem Bus, wenn dies gewünscht ist, das Pipelining nicht verwendet werden.
  • Verschiedene Ausführungsformen des Systems 10 können zusätzliche Schaltungen umfassen, die in 1 nicht gezeigt sind. Zum Beispiel kann das System 10 verschiedene E/A-Einrichtungen und/oder -Schnittstellen umfassen. Beispielhafte E/As können eine oder mehrere PCI-Schnittstellen, eine oder mehrere serielle Schnittstellen, "Personal Computer Memory Card International Association"-(PCMCIA)-Schnittstellen (CardBus-Schnittstellen), etc. umfassen. Derartige Schnittstellen können direkt mit der Verbindung 22 gekoppelt sein oder können durch eine oder mehrere E/A-Brückenschaltungen gekoppelt sein.
  • In einer Ausführungsform kann das System 10 (und genauer die Prozessoren 12A12N, die Speichersteuerung 14, die Schnittstellenschaltungen 20A20C, die Paket-DMA-Schaltung 16, der Schalter 18 und die Verbindung 22) auf einer einzigen integrierten Schaltung als ein System auf einer Chipkonfiguration integriert sein. Die oben erwähnten zusätzlichen Schaltungen können ebenfalls integriert sein. Alternativ dazu können andere Ausführungsformen einen oder mehrere der Einrichtungen als separate integrierte Schaltungen implementieren. In anderen Konfigurationen kann der Speicher 24 ebenfalls integriert sein. Alternativ dazu kann je nach Wunsch eine oder mehrere der Komponenten als separate integrierte Schaltungen implementiert werden, oder alle Komponenten können separate integrierte Schaltungen sein. Es kann jegliches Level von Integration verwendet werden.
  • Es sei angemerkt, dass, obwohl in 1 drei Schnittstellenschaltungen 20A20C veranschaulicht sind, in verschiedenen Ausführungsformen zwei oder mehrere Schnittstellenschaltungen implementiert werden können.
  • Nun wird 2 betrachtet, in der ein Blockdiagramm gezeigt ist, das eine Ausführungsform von virtuellen Kanälen in dem System 10 veranschaulicht, sowie auch Beispiele für aufteilenden und zusammensetzenden Paketverkehr. In der veranschaulichten Ausführungsform sind die Rx-Schaltungen 26A26C und die Tx-Schaltungen 28A28C gezeigt. Außerdem ist die Paket-DMA-Schaltung 16 so gezeigt, dass sie eine Eingabe-Paket-DMA-Schaltung (PDI) 40 und eine Ausgabe-Paket-DMA-Schaltung (PDO) 42 umfasst. Die PDI 40 ist gekoppelt, um Schreibbefehle auf der Verbindung 22 zu übertragen, um empfangene Pakete in den Speicher zu schreiben. Die PDO 42 ist gekoppelt, um Lesebefehle auf der Verbindung 22 zu übertragen und um die gelesenen Daten zu empfangen, die Pakete umfassen, die von dem System 10 übertragen werden sollen. Außerdem kann jede der PDI 40 und der PDO 42 wie oben erwähnt so aufgebaut sein, dass sie Deskriptoren liest und schreibt, die die Plätze in dem Speicher definieren, in die die Pakete gelesen und geschrieben werden sollen.
  • Jede Rx-Schaltung 26A26C unterstützt einen Satz von virtuellen Eingabekanälen (IVCs), die von der Schnittstelle definiert sind, von der die Rx-Schaltung die Paketdaten erhält. So können zum Beispiel die SPI-4-Schnittstelle und die HT-Schnittstelle beide 16 virtuelle Kanäle in der Hardware unterstützen (obwohl von der Software in der SPI-4-Schnittstelle mehr verwendet werden können, da ein Wert für den virtuellen Kanal von 8 Bit unterstützt wird). Somit unterstützt jede Rx-Schaltung 26A26C 16 IVCs (numeriert von 0–15 in 2). In ähnlicher Weise unterstützt jede Tx-Schaltung 28A28C 16 virtuelle Ausgabekanäle (OVCs), numeriert von 0–15 in 2. Andere Ausführungsformen können mehr oder weniger IVCs und OVCs entsprechend den Schnittstellen verwenden, die von diesen Ausführungsformen unterstützt werden. Die PDI 40 umfasst einen logischen Satz von Eingabewarteschlangen (z.B. 32 in der veranschaulichten Ausführungsform, numeriert von 0–31, obwohl in anderen Ausführungsformen mehr oder weniger Eingabewarteschlangen umfasst sein können). Die PDO 42 umfasst einen logischen Satz von Ausgabewarteschlangen (z.B. 32 in der veranschaulichten Ausführungsform, numeriert von 0–31, obwohl in anderen Ausführungsformen mehr oder weniger Ausgabewarteschlangen umfasst sein können).
  • Jede Rx-Schaltung 26A26C umfasst in der veranschaulichten Ausführungsform eine Hash-and-Route-(H&R)-Schaltung 44A44C, die Pakete aus den IVCs einem virtuellen Schalterkanal (SVC) zuordnet. Der SVC wird als der interne virtuelle Kanal für das System 10 verwendet und wird insbesondere dazu verwendet, Pakete durch den Schalter 18 zu der Paket-DMA-Schaltung 16 oder zu den Tx-Schaltungen 28A28C zu übertragen. Von einem anderen Blickwinkel aus betrachtet werden Anforderungen, Paketdaten durch den Schalter 18 zu übertragen, auf der Grundlage des SVC des Pakets ausgegeben, welcher sowohl das Ziel des Pakets als auch den virtuellen Kanal bei dem Ziel identifiziert. Der SVC kann hier auch als ein Ziel und der virtuelle Kanal bei dem Ziel bezeichnet werden.
  • In der veranschaulichten Ausführungsform können die H&R-Schaltungen 44A44C die IVCs einem von 16 PDI VCs zuordnen (numeriert von 0–15 in 2, wobei durchgehende Linien ausgehend von den H&R-Schaltungen 44A44C verwendet werden). Diese PDI VCs können außerdem den Eingabewarteschlangen in der PDI 40 zugeordnet werden, z.B. unter Verwendung eines Registers, mit dem die H&R-Schaltung 44A gekoppelt ist (siehe 5 unten). Das heißt, VCs bei der PDI 40 können direkt den Eingabewarteschlangen entsprechen, oder die Eingabewarteschlangen können jeweils ein VC in der PDI 40 sein. In der veranschaulichten Ausführungsform werden die PDI VCs den Eingabewarteschlangen in Blöcken von acht zugeordnet (z.B. der PDI VC 0 ist die Eingabewarteschlange 0, 8, 16 oder 24; der PDI VC 1 ist die Eingabewarteschlange 1, 9, 17 oder 25, etc.). In anderen Ausführungsformen kann jeder PDI VC individuell einer Eingabewarteschlange zugeordnet werden, oder größenmäßig anders bemessene Blöcke von Eingabewarteschlangen können den PDI VCs zugeordnet werden. In noch einer anderen Ausführungsform können die H&R-Schaltungen 44A44C die IVCs den PDI-Eingabewarteschlangen direkt zuordnen (z.B. ohne den Zwischenschritt der PDI VCs). Außerdem können die H&R-Schaltungen 44A44C Pakete von einem IVC zu einem OVC in einer der Tx-Schaltungen 28A28C zuordnen, was für die H&R-Schaltung 44A mit gestrichelten Linien durch den Block der SVCs zu den Tx-Schaltungen 28A28C veranschaulicht ist.
  • Die H&R-Schaltungen 44A44C können dazu verwendet werden, die Pakete von dem gleichen IVC auf unterschiedliche SVCs aufzuteilen (z.B. verschiedene Eingabewarteschlangen in der PDI und/oder den OVCs in den Tx-Schaltungen 28A28C). Somit können die H&R-Schaltungen 44A44C eine Software-Flexibilität vorsehen, um auf der Grundlage von verschiedenen Paketattributen (wie z.B. Header-Werte) die Pakete zur Verarbeitung von den Paketen zu trennen, die durch die Tx-Schaltungen 28A28C weitergeleitet werden, oder sie können auf der Grundlage von verschiedenen Paketattributen für eine Trennung der Pakete in unterschiedliche Eingabewarteschlangen in der PDI 40 sorgen (z.B. für verschiedene Verarbeitungstypen). Die H&R-Schaltungen 44A44C können je nach Wunsch auch so programmiert sein, dass sie die IVCs den SVCs zuordnen, ohne irgendwelche zusätzlichen Paketattribute zu verwenden, oder eine Kombination aus solchen Zuordnungen oder anderen Zuordnungen, die zusätzliche Paketattribute verwenden. In anderen Ausführungsformen können die Rx-Schaltungen 26A26B keine H&R-Schaltungen umfassen und können stattdessen eine programmierbare oder festgelegte Zuordnung jedes IVC zu einem spezifizierten SVC verwenden (Tx-Schaltung 28A28C und OVC in dieser Schaltung, oder PDI 40 und eine Eingabewarteschlange in der PDI 40). Es sei angemerkt, dass Pakete, die von einer Rx-Schaltung 26A26C direkt zu einer Tx-Schaltung 28A28C geroutet werden, die Paket-DMA-Schaltung 16, den Speicher 24 und die Verarbeitung durch die Prozessoren 12A12N umgehen.
  • Die Ausgabewarteschlangen der PDO 42 werden ebenfalls verschiedenen Tx-Schaltungen 28A28C und den OVCs in diesen Tx-Schaltungen 28A28C zugeordnet. In der veranschaulichten Ausführungsform werden die Ausgabewarteschlangen den Tx-Schaltungen und den OVCs in Blöcken von 8 zugeordnet, ähnlich wie bei dem Zuordnen der IVCs zu den Eingabewarteschlangen. Andere Ausführungsformen können Ausgabewarteschlangen je nach Wunsch individuell oder in Blöcken anderer Größen zuordnen. In einer Ausführungsform umfasst die PDO 42 ein oder mehrere Konfigurationsregister, die mit der Zuordnung jedes Blocks von 8 Ausgabewarteschlangen zu einer entsprechenden Gruppe von SVCs (die die Tx-Schaltung 28A28C und den OVC innerhalb dieser Tx-Schaltung identifizieren) programmiert sind. Andere Ausführungsformen können ausgefeiltere Zuordnungsmechanismen ähnlich den H&R-Schaltungen verwenden, um Pakete auf der Grundlage von Paketattributen zusätzlich den Ausgabewarteschlangen zuzuordnen, falls dies gewünscht ist.
  • 2 veranschaulicht über die durchgehenden Pfeile zwischen den H&R-Schaltungen 44A44C und der PDI 40 eine beispielhafte Zuordnung von den PDI VCs der H&R-Schaltungen 44A44C zu den Eingabewarteschlangen der PDI 40. Die beispielhafte Zuordnung ist nur ein Beispiel für die Zuordnungen, die verwendet werden können, wie es von Software in die Rx-Schaltungen 26A26C programmiert ist. In dem Beispiel werden die PDI VCs 0–7 von der H&R-Schaltung 44A den Eingabewarteschlangen 0–7 zugeordnet; die PDI VCs 0–7 von der H&R-Schaltung 44B werden den Eingabewarteschlangen 8–15 zugeordnet; die PDI VCs 0–7 von der H&R-Schaltung 44C werden den Eingabewarteschlangen 16–23 zugeordnet; und die PDI VCs 8–15 von jeder der H&R-Schaltungen 44A44C werden zu den Eingabewarteschlangen 24–31 gemerged bzw. zusammengesetzt. Wenn die Zuordnungen die PDO VCs von verschiedenen H&R-Schaltungen 44A44C zusammensetzen, kann der Schalter 18 das Zusammensetzen an Paketgrenzen durchführen. Das heißt, wenn eine gegebene Rx-Schaltung 26A26C gewährt wurde, um ein Paket zu einer Eingabewarteschlange zu übertragen, die unter den Rx-Schaltungen 26A26C zusammengesetzt wird, dann verhindert der Schalter eine Gewährung einer anderen Rx-Schaltung 26A26C auf dieser Eingabewarteschlange, bis die gewährte Rx-Schaltung 26A26C eine Paketgrenze erreicht. Es kann jegliche Kombination aus PDI VCs von verschiedenen Rx-Schaltungen 26A26C in Eingabewarteschlangen zusammengesetzt werden, je nachdem, wie dies in verschiedenen Zuordnungen gewünscht ist.
  • 2 veranschaulicht auch über die durchgehenden Pfeile zwischen der PDO 42 und den Tx-Schaltungen 28A28C eine beispielhafte Zuordnung von Ausgabewarteschlangen zu Tx-Schaltungen und OVCs. Die beispielhafte Zuordnung ist nur ein Beispiel von Zuordnungen, die verwendet werden können, wie dies durch die Software programmiert ist. In der veranschaulichten Zuordnung werden die Ausgabewarteschlangen 0–7 den OVCs 8–15 in der Tx-Schaltung 28C zugeordnet; die Ausgabewarteschlangen 8–15 werden den OVCs 0–7 in der Tx-Schaltung 28C zugeordnet; die Ausgabewarteschlangen 16–23 werden den OVCs 8–15 in der Tx-Schaltung 28B zugeordnet; und die Ausgabewarteschlangen 24–31 werden den OVCs 0–7 in der Tx-Schaltung 28A zugeordnet. Außerdem können die Rx-Schaltungen 26A26C die IVCs den OVCs zuordnen, und somit kann es zu einem Zusammensetzen von Paketen von den Rx-Schaltungen 26A26C und den Ausgabewarteschlangen zu einem OVC kommen. Wiederum kann der Schalter 18 dieses Zusammensetzen an Paketgrenzen handhaben.
  • Wie oben erwähnt worden ist, können Zuordnungen von IVCs in den Rx-Schaltungen 26A26C zu OVCs in den Tx-Schaltungen 28A28C vorhanden sein. In 2 veranschaulichen zum Beispiel die gestrichelten Linien mögliche Zuordnungen von den IVCs der Rx-Schaltung 26A (über die H&R-Schaltung 44A) zu den OVCs der Tx-Schaltungen 28A28C. Außerdem veranschaulicht eine punktierte Linie von der Rx-Schaltung 26B (die H&R-Schaltung 44B) zu den OVCs der Tx-Schaltung 28B das mögliche Zusammensetzen von Paketströmen von verschiedenen Rx-Schaltungen 26A26C zu einer gegebenen Tx-Schaltung 28A28C. Wiederum kann der Schalter 18 Pakete von verschiedenen Rx-Schaltungen 26A26C zu einem gegebenen OVC auf einer Paketgrenzenbasis zusammensetzen. Das Zusammensetzen kann zwischen jeglicher Kombination von Rx-Schaltungen 26A26C und der PDO 42 auftreten.
  • Die Eingabewarteschlangen der PDI 40 und die Ausgabewarteschlangen der PDO 42 können logische Warteschlangen sein. Das heißt, die Warteschlangen können tatsächlich in dem Speicher 24 implementiert werden. Die PDI 40 und die PDO 42 können Puffer umfassen, um die Paketdaten zu puffern, die zu und aus dem Speicher 24 übertragen werden. Die Warteschlangen können auf jegliche Weise implementiert werden. In einer speziellen Ausführungsform wird jede Warteschlange als ein Deskriptorring (oder -kette) implementiert, der Speicherpuffer identifiziert, um die Paketdaten zu speichern, die einer gegebenen Eingabewarteschlange entsprechen. In anderen Ausführungsformen können die Warteschlangen auf jede gewünschte Weise implementiert werden (z.B. verknüpfte Listen, zusammenhängende Speicherbereiche für die Paketspeicherpuffer, etc.). Die PDI 40 und die PDO 42 können Lese- und Schreibbefehle generieren, um die Deskriptoren zu holen und zu aktualisieren.
  • Es sei angemerkt, dass, obwohl die Rx-Schaltungen 26A26C und die Tx-Schaltungen 28A28C so beschrieben sind, dass sie verschiedene virtuelle Kanäle für Pakete unterstützen, diese Schaltungen in einigen Ausführungsformen zusätzliche virtuelle Kanäle für andere Arten von Verkehr unterstützen können. Zum Beispiel ist die HT-Schnittstelle in der Lage, Nicht-Paket-Verkehr (z.B. E/A-Verkehr) in zusätzlichen virtuellen Kanälen zu unterstützen. Außerdem kann die HT-Schnittstelle in einer Ausführungsform kohärente virtuelle Kanäle (d.h. virtuelle Kanäle, die kohärenten Verkehr unterstützen) für Transaktionen unterstützen, die verwendet werden, um die Kohärenz zwischen den Einrichtungen auf der HT-Schnittstelle aufrechtzuerhalten. Die Rx-Schaltungen 26A26C und die Tx-Schaltungen 28A28C können so ausgelegt sein, dass sie zusätzlich Daten, die auf diesen VCs empfangen werden, gemäß der HT-Definition und/oder den Kohärenzerfordernissen routen.
  • Nun wird 3 betrachtet, in der ein Blockdiagramm einer Ausführungsform eines Paketverarbeitungssystems 80 gezeigt ist. In dem veranschaulichten Paketverarbeitungssystem 80 sind zwei Systeme 10 (System 10A und System 10B) enthalten. Veranschaulicht in 3 sind die Paket-DMA-Schaltung 16, der Schalter 18 und die Schnittstellenschaltungen (I/F) 20A20C für jedes der Systeme 10A10B. In der veranschaulichten Ausführungsform ist die Schnittstellenschaltung 20A des Systems 10A mit einer Schnittstelle zu einer Paketquellen-/-zieleinrichtung 90A gekoppelt; die Schnittstellenschaltung 20B des Systems 10A ist mit einer Schnittstelle zu einer Paketquellen-/-zieleinrichtung 90B gekoppelt; die Schnittstellenschaltung 20C des Systems 10A ist mit einer Schnittstelle zu der Schnittstellenschaltung 20A des Systems 10B gekoppelt; die Schnittstellenschaltung 20B des Systems 10B ist mit einer Schnittstelle zu einer Paketquellen-/-zieleinrichtung 90C gekoppelt; und die Schnittstellenschaltung 20C des Systems 10B ist mit einer Schnittstelle zu einer Paketquellen-/-zieleinrichtung 90D gekoppelt.
  • Eine Paketquellen-/-zieleinrichtung 90A90D kann allgemein in der Lage sein, Pakete zu sourcen, Pakete zu empfangen, oder beides. Die Paketquellen-/-zieleinrichtungen 90A90D können jegliche Kombination von Paketkommunikati onseinrichtungen umfassen. Zum Beispiel können verschiedene Paketquellen-/-zieleinrichtungen 90A90D Rechensysteme sein, die miteinander über Pakete kommunizieren können. Die Paketquellen-/-zieleinrichtungen 90A90D können verschiedene Netzwerkeinrichtungen umfassen (z.B. Router, Paketschalter, Gateways, Firewalls, Konzentratoren, Verteiler (Hubs), etc.). Die Paketquellen-/-zieleinrichtungen 90A90D können auch verschiedene Coprozessor-Hardware umfassen, die so ausgelegt sein kann, dass sie bestimmte Paketverarbeitungsfunktionen ausführt (z.B. Sicherheitsprozessoren zur Durchführung der sicheren Internetprotokollverarbeitung (IPSec), Verschlüsselungs-/Entschlüsselungsmaschinen, Coprozessoren, die dafür ausgelegt sind, spezielle Protokolle oder Protokollerweiterungen zu verarbeiten, etc.).
  • Das Paketverarbeitungssystem 80 kann die Paketstromteilungs- und -zusammensetzungsmerkmale der Systeme 10A10B auf verschiedene Arten verwenden. Zum Beispiel kann die Verarbeitungslast dann, wenn eine Paketquellen-/-zieleinrichtung (z.B. die Einrichtung ) Pakete sourced, die von der Software verarbeitet werden sollen, die auf den Prozessoren 12A12N in den Systemen 10A10B ausgeführt wird, durch das Aufteilen des Paketstroms von dieser Einrichtung 90A geteilt werden. In so einem Fall kann die Schnittstellenschaltung 20A in dem System 10A so programmiert werden, dass sie den Paketstrom in Pakete für die Paket-DMA-Schaltung 16 und die Schnittstellenschaltung 20C aufteilt. Die Pakete, die von der Paket-DMA-Schaltung 16 des Systems 10A empfangen werden, können zu dem Speicher 24 des Systems 10A übertragen werden und können von der Software verarbeitet werden, die auf den Prozessoren 12A12N ausgeführt wird. Die Pakete, die von der Schnittstellenschaltung 20C des Systems 10A empfangen werden, können zu der Schnittstellenschaltung 20A des Systems 10B übertragen werden, die die Pakete zu der Paket-DMA-Schaltung 16 des Systems 10B übertragen kann. Die Paket-DMA-Schaltung 16 des Systems 10B kann die Pakete zu dem Speicher 24 des Systems 10B übertragen, und die Prozessoren 12A12N des Systems 10B können diese Pakete verarbeiten. Aus einem anderen Blickwinkel betrachtet können die 32 Eingabewarteschlangen der PDI 40 in dem System 10A und die 32 Eingabewarteschlangen der PDI 40 in dem System 10B von einer Paketquellen-/-zieleinrichtung 90A90B als 64 Eingabewarteschlangen zum Empfangen von Paketen betrachtet werden, die verarbeitet werden sollen.
  • In einem anderen Beispiel können die Pakete, die von einer gegebenen Paketquellen-/-zieleinrichtung 90A90D gesourced werden, aufgeteilt werden in: (i) Pake te, die verarbeitet werden sollen (z.B. Pakete, die zu der Paket-DMA-Schaltung 16 des Systems 10A und/oder des Systems 10B übertragen werden); und (ii) Pakete, die zu einer oder mehreren Paketquellen-/-zieleinrichtungen 90A90D übertragen werden sollen. Außerdem können Pakete, die von zwei oder mehreren Paketquellen-/-zieleinrichtungen übertragen werden, zu einer Paket-DMA-Schaltung 16 oder einer Schnittstellenschaltung 20A20C für die Übertragung zu einer Paketquellen-/-zieleinrichtung 90A90D gemerged werden.
  • Es sei angemerkt, dass, obwohl die Paketquellen-/-zieleinrichtungen 90A-90D mit bidirektionalen Verknüpfungen zu der gleichen Schnittstellenschaltung 20A20C in den Systemen 10 in 3 veranschaulicht sind, andere Ausführungsformen eine unidirektionale Verknüpfung von einer Paketquelleneinrichtung (das heißt, eine Einrichtung, die nur als Paketquelle dient) oder einer Paketzieleinrichtung (das heißt, eine Einrichtung, die nur als Paketsenke dient) verwenden können. In Ausführungsformen, die die SPI-4-Schnittstelle verwenden, kann eine SPI-4-Verknüpfung in der gewünschten Richtung ausgehend von einer Schnittstellenschaltung 20A20C verwendet werden. Wenn eine Paketquelleneinrichtung zum Beispiel mit der Schnittstellenschaltung 20A gekoppelt wäre, kann die Rx-Schaltung 26A dazu verwendet werden, Pakete von der Paketquelleneinrichtung über die SPI-4-Schnittstelle zu empfangen. Die Tx-Schaltung 28a kann über die SPI-4-Schnittstelle mit anderen Einrichtungen gekoppelt sein oder kann überhaupt nicht verwendet werden. In ähnlicher Weise kann die Tx-Schaltung 28A dann, wenn eine Paketzieleinrichtung mit der Schnittstelle 20A gekoppelt wäre, dazu verwendet werden, Pakete zu der Paketzieleinrichtung über die SPI-4-Schnittstelle zu übertragen. Die Rx-Schaltung 26A kann über die SPI-4-Schnittstelle mit anderen Einrichtungen gekoppelt sein, oder sie kann überhaupt nicht verwendet werden. Außerdem kann in einigen Ausführungsformen eine Paketquellen-/-zieleinrichtung mit einer SPI-4-Verknüpfung in einer Richtung mit einem System 10 gekoppelt sein (z.B. von der Einrichtung zu dem System 10 hin) und mit einer anderen SPI-4-Verknüpfung in der anderen Richtung ausgehend von einem anderen System 10 (z.B. von dem System 10 zu der Einrichtung hin).
  • In der Ausführungsform von 3 sind zwar zwei Systeme 10A10B veranschaulicht, aber andere Ausführungsformen können ein System 10 oder mehr als zwei Systeme 10 umfassen, die auf jede gewünschte Weise gekoppelt sein können.
  • Nun wird 4 betrachtet, in der ein Blockdiagramm eines Beispiel für das Teilen und Zusammensetzen von Paketströmen in der Ausführungsform des in 3 gezeigten Paketverarbeitungssystems 80 gezeigt ist. Das Beispiel von 4 ist nur eines von zahlreichen Beispielen für das Teilen und Zusammensetzen von Paketen, das in der Ausführungsform des Paketverarbeitungssystems 80 möglich sein kann, das in 3 gezeigt ist, oder das in anderen Ausführungsformen möglich sein kann.
  • In dem Beispiel von 4 sind drei Quellenpaketströme gezeigt. Der erste Quellenpaketstrom 82A stammt von der Paketquellen-/-zieleinrichtung 90A und wird auf dem virtuellen Kanal 0 (VC0) der Schnittstelle zwischen der Einrichtung und der Rx-Schaltung 26A in dem System 10A übertragen. Jeder Paketstrom, der in 4 gezeigt ist, veranschaulicht einen zeitlich geordneten Satz von Paketen, wobei sich das erste Paket (in der Zeit) an dem Kopf des Pfeils befindet (an der Stelle, an der sich der Pfeilkopf befindet) und nachfolgende Pakete in der zeitlichen Ordnung in einer Reihenfolge in Richtung auf das hintere Ende des Pfeils hin gezeigt sind. Somit umfasst der Paketstrom 82A ein Paket P00, gefolgt von einem Paket P01, gefolgt von einem Paket P02. In ähnlicher Weise umfasst der Paketstrom 82B von der Paketquellen-/-zieleinrichtung 90B die Pakete P10, P11 und P12 (die in dem VC0 auf der Schnittstelle zu der Rx-Schaltung 26B des Systems 10A wandern). Der Paketstrom 82C wird von der Paket-DMA-Schaltung 16 in dem System 10A vorgesehen, in einer Ausgabewarteschlange, die dem OVC6 in der Schnittstellenschaltung 20B des Systems 10A zugeordnet ist (gezeigt als Paketstrom 82G in 4).
  • Für das Beispiel von 4 ist aus Bequemlichkeitsgründen ein virtueller Kanal für jeden Paketstrom gezeigt. Andere virtuelle Kanäle können generell in einem Paketstrom, verschachtelt mit den Paketen auf dem gezeigten virtuellen Kanal, enthalten sein.
  • Die Rx-Schaltung 26A in dem System 10A empfängt den Paketstrom 82A und teilt den Paketstrom in zwei Ströme 82D und 82E. Der Strom 82D wird der Paket-DMA-Schaltung 16 in dem System 10A zugeordnet, in die Eingabewarteschlange 0 (IQ0) hinein. Der Paketstrom 82E wird der Schnittstellenschaltung 20C des Systems 10A auf dem OVC0 zugeordnet. In diesem Beispiel umfasst der Paketstrom 82D das Paket P01, und der Paketstrom 82E umfasst die Pakete P00 und P02. Die Rx-Schaltung 26A in dem System 10A fordert somit Transfers zu der Paket-DMA- Schaltung 16 auf dem IQ0 und zu der Schnittstellenschaltung 26C auf dem OVC0 von dem Schalter 18 in dem System 10A an.
  • Die Rx-Schaltung 26B in dem System 10A empfängt in diesem Beispiel den Paketstrom 82B und ordnet den Paketstrom 82B dem Paketstrom 82F auf der Schnittstellenschaltung 20C in dem System 10A auf dem OCV0 zu. Die Rx-Schaltung 26B in dem System 10A fordert somit Transfers zu der Schnittstellenschaltung 20C auf dem OVC0 von dem Schalter 18 in dem System 10A an. Folglich werden in diesem Beispiel die Paketströme 82E und 82F von dem Schalter 18 des Systems 10A zusammengesetzt.
  • Der Schalter 18 des Systems 10A gewährt die Transfers von den verschiedenen Quellen (die Rx-Schaltungen 26A und 26B und die Paket-DMA-Schaltung 16) über der Zeit und generiert somit die Paketströme 82H, 82I und 82J jeweils zu der Tx-Schaltung 28C in dem System 10A, der Paket-DMA-Schaltung 16 in dem System 10A und der Tx-Schaltung 28B in dem System 10A. Der Paketstrom 82H ist die Zusammensetzung der Paketströme 82E und 82F. Vor allem in diesem Beispiel wird das Paket P10 zuerst aus dem Paketstrom 82F ausgewählt, gefolgt von den Paketen P00 und P02 aus dem Paketstrom 82E, gefolgt von den Paketen P11 und P12 aus dem Paketstrom 82F. In anderen Beispielen können die Pakete in anderen Reihenfolgen verschachtelt sein, in Abhängigkeit von der relativen Zeit der Ankunft der Pakete, der Arbitrierung des Schalters zwischen den Rx-Schaltungen 26A26B, der Verfügbarkeit des Transfers auf dem OVC0 durch die Tx-Schaltung 28C, etc.. Pakete von einer gegebenen Quelle können in einer relativen Ordnung bleiben (da sie in diesem Beispiel in dem gleichen IVC sind), aber die Reihenfolge zwischen Paketen von verschiedenen Quellen kann unterschiedlich sein. Die Pakete können an der Paketgrenze zusammengesetzt werden. Der Paketstrom 82H (auf dem OVC0) wird der Tx-Schaltung 28C zugeführt, die den Paketstrom (auf dem VC0 der Schnittstelle) zu der Rx-Schaltung 26A in dem System 10B überträgt (Paketstrom 82K). In ähnlicher Weise wird der Paketstrom 82J (auf dem OVC6) zu der Tx-Schaltung 28B in dem System 10A geliefert, die den Paketstrom auf dem VC6 der Schnittstelle zu der Paketquellen-/-zieleinrichtung 90B überträgt (Paketstrom 82L). Außerdem empfängt die Paket-DMA-Schaltung 16 in dem System 10A den Paketstrom 82I und speichert das Paket zu dem IQ0 in dem Speicher 24.
  • Die Rx-Schaltung 26A in dem System 10B empfängt in diesem Beispiel den Paketstrom 82K und teilt den Strom in die Paketströme 82M und 82N zu jeweils der Paket-DMA-Schaltung 16 (auf dem IQ12) und der Schnittstelle 20C (auf dem OVC3). Insbesondere umfasst der Paketstrom 82M die Pakete P02, P11 und P12 von dem Paketstrom 82K, und der Paketstrom 82N umfasst die Pakete P10 und P00. Somit arbitriert die Rx-Schaltung 26A für die Transfers durch den Schalter 18 des Systems 10B für die Paket-DMA-Schaltung 16, IQ12 und die Schnittstelle 20C, OVC3 (beide in dem System 10B). Der Schalter 18 gewährt die Transfers über der Zeit (entsprechend der Zielverfügbarkeit), und die Paketströme 82O und 82P (die jeweils den Paketströmen 82M und 82N entsprechen) werden jeweils zu der Paket-DMA-Schaltung 16 in dem System 10B und der Tx-Schaltung 28C in dem System 10B übertragen. Die Tx-Schaltung 28C in dem System 10B überträgt den entsprechenden Paketstrom 82Q auf der Schnittstelle zu der Paketquellen-/-zieleinrichtung 90D.
  • Somit wird in diesem Beispiel ein Paket P00 von der Paketquellen-/-zieleinrichtung 90A durch die Rx-Schaltung 26A, den Schalter 18 und die Tx-Schaltung 28C des Systems 10A und die Rx-Schaltung 26A, den Schalter 18, und die Tx-Schaltung 28C des Systems 10B zu der Paketquellen-/-zieleinrichtung 90D geroutet. Das Paket P01 von der Paketquellen-/-zieleinrichtung 90A wird durch die Rx-Schaltung 26A, den Schalter 18 und die Paket-DMA-Schaltung 16 des Systems 10A zur Verarbeitung in einer Software geroutet, die auf den Prozessoren 12A12N des Systems 10A ausgeführt wird. Das Paket P02 von der Paketquellen-/-zieleinrichtung 90A wird durch die Rx-Schaltung 26A, den Schalter 18 und die Tx-Schaltung 28C des Systems 10A und die Rx-Schaltung 26A, den Schalter 18 und die Paket-DMA-Schaltung 16 des Systems 10B zur Verarbeitung in einer Software geroutet, die auf den Prozessoren 12A12N des Systems 10B ausgeführt wird. Entlang des Pfades werden die Pakete P00 und P02 mit den Paketen P10, P11 und P12 von der Paketquellen-/-zieleinrichtung 90B zusammengesetzt, und der zusammengesetzte Strom wird in dem System 10B geteilt.
  • Wie das Beispiel von 4 veranschaulicht, kann das flexible Zusammensetzen und Teilen der Paketströme in den Systemen 10A10B in Paketverarbeitungssystemen wie z.B. dem Paketverarbeitungssystem 80 dazu verwendet werden, um die Pakete im Grunde genommen auf jede gewünschte Art und Weise von einer Vielzahl von Quellen zu einer Vielzahl von Zielen zu routen.
  • Nun wird 5 betrachtet, in der ein genaueres Diagramm eines Teils einer Ausführungsform der Rx-Schaltung 26A gezeigt ist. Andere Rx-Schaltungen 26B26C können ähnlich sein. In der Ausführungsform von 5 umfasst die Rx-Schaltung 26A einen Decoder 50 (der einen SPI-Decoder 52 und einen HT-Decoder 54 einschließlich eines PoHT-BAR1-Registers 56 umfasst), eine Hash-and-Route (H&R)-Schaltung 44A, einen Rx-Puffer 58, eine Schalterschnittstellenschaltung 60, und ein PDI_Map-Register 62. Der Decoder 50 ist so gekoppelt, dass er Eingabedaten auf der Schnittstelle 30A empfängt, und ist so gekoppelt, dass er einen IVC und die Paketdaten zu der H&R-Schaltung 44A vorsieht. Der Decoder 50 ist auch so gekoppelt, dass er die Paketdaten dem Rx-Puffer 58 zur Speicherung liefert. Die H&R-Schaltung 44A ist so aufgebaut, dass sie einen SVC und optional einen Wert für das nächste Ziel (next_dest-Wert) generiert, die von dem Rx-Puffer 58 empfangen werden. Der Rx-Puffer 58 ist mit dem Schalter 18 gekoppelt (vor allem dem Datenpfad des Schalters 18) und ist mit der Schalterschnittstellensteuerung 60 gekoppelt. Die Hash-and-Route-Schaltung 44A ist auch mit dem PDI Map-Register 62 gekoppelt.
  • Der Decoder 50 empfängt die Eingabedaten von der Schnittstelle 30A und decodiert die Daten gemäß der SPI-Spezifikation (in dem SPI-Decoder 52) oder der HT-Spezifikation (in dem HT-Decoder 54). Einer der Decoder 52 bzw. 54 ist aktiv in Abhängigkeit davon, mit welcher Schnittstelle 30A die Rx-Schaltung 26A gekoppelt ist. Der aktive Decoder 52 oder 54 kann auf jede gewünschte Weise ausgewählt werden. Die PoHT-Erweiterung zu der HT-Schnittstelle bildet einen Adressbereich (gespeichert in dem PoHT-BAR1-Register 56), zu dem Schreibbefehle in HT-Größe geleitet werden können, um Paketdaten zu übertragen. Der IVC kann in dem Sequenz-ID-Feld des HT-Pakets unterstützt werden, und die niedrigstwertigen Bits der Adresse können angeben, ob die Daten den Start des Pakets, die Mitte des Pakets oder das Ende des Pakets, die Anzahl von gültigen Bytes in dem letzten Doppelwort des HT-Pakets und einen Fehlerstatus darstellen. Wenn ein Schreibbefehl in HT-Größe decodiert wird und sich die Adresse in dem Adressbereich befindet, der von dem PoHT-BAR1-Register angegeben wird, ist das HT-Paket ein PoHT-Paket, und die Daten, die mit dem Schreibbefehl in dieser Größe übertragen werden, sind Paketdaten.
  • Der Decoder 50 liefert den IVC des Pakets und die empfangenen Paketdaten zu der H&R-Schaltung 44A. Die H&R-Schaltung 44A kann Bytes der Paketdaten und/oder den IVC auswählen und einen entsprechenden SVC generieren. Während die H&R-Schaltung 44A jegliche Hashing- und Zuordnungsfunktion implementieren kann, ist eine Ausführungsform der H&R-Schaltung 44A in 6 gezeigt und wird weiter unten noch genauer beschrieben. Die Paketdaten und die SVC-Ausgabe von der H&R-Schaltung 44A werden in dem Rx-Puffer 58 gespeichert. Der Rx-Puffer 58 kann eine Speicherung für jeden IVC umfassen, was unter Verwendung der Konfigurationsregister programmierbar den IVCs zugewiesen werden kann (nicht gezeigt).
  • Die Schalterschnittstellenschaltung 60 kann die Pakete scannen, die in dem Rx-Puffer 58 gespeichert sind, und Anforderungen für den Schalter 18 generieren. Eine Anforderung umfasst den SVC des Pakets (das Ziel, z.B. die PDI 40 oder eine der Tx-Schaltungen 28A28C und den virtuellen Kanal an diesem Ziel, z.B. die Eingabewarteschlange für die PDI 40 oder den OVC für die Tx-Schaltungen 28A28C). Die Anforderung kann auch eine Anzeige des Endes eines Pakets (EOP) umfassen, um dem Schalter anzuzeigen, dass die Anforderung, wenn sie gewährt ist, das Ende des Pakets darstellt, das im Augenblick von der Rx-Schaltung 26A auf dem angeforderten SVC übertragen wird. Die Anforderung kann auch eine Gültigkeitsanzeige umfassen, die angibt, ob eine Anforderung getätigt ist oder nicht. Wenn der Schalter die Anforderung gewährt, gibt der Schalter den gewährten SVC der Schalterschnittstellenschaltung 60 zurück (d.h. das Ziel, das gewährt ist, und die Eingabewarteschlange oder den OVC an dem Ziel, die/der gewährt ist). Die Gewährung kann außerdem eine Gültigkeitsanzeige umfassen, die anzeigt, ob eine Gewährung erteilt wird oder nicht.
  • In einer Ausführungsform gewährt der Schalter 18 einen Transfer durch den Schalter pro Anforderung. So können zum Beispiel in einer Implementation 16 Bytes von Daten durch den Schalter von einer Quelle zu einem Ziel in einem Transfer übertragen werden. Somit können eine Vielzahl von Anforderungen und Gewährungen für den gleichen SVC verwendet werden, um ein Paket zu einem gegebenen Ziel zu übertragen, wenn das Paket größer als ein Transfer durch den Schalter ist. Die EOP-Anzeige zeigt das Ende des Pakets nicht an, bis die letzte Anforderung getätigt worden ist. Der Schalter 18 verhindert dann, wenn ein gegebener VC in einem Ziel einer Quelle gewährt worden ist, dass andere Quellen eine Gewährung für diesen VC und dieses Ziel bekommen, bis die EOP-Anzeige in einer Anforderung von der gewährten Quelle erhalten wird.
  • Im Ansprechen auf eine Gewährung kann die Schalterschnittstellenschaltung 60 bewirken, dass der Rx-Puffer 58 die nächsten 16 Bytes des Pakets überträgt, das dem gewährten SVC entspricht. Der Rx-Puffer 58 kann die Speicherung, aus der die 16 Bytes ausgelesen wurden, im Ansprechen auf den Transfer der Daten durch den Schalter 18 freigeben.
  • Es sei angemerkt, dass zwar oben 16 Bytes als ein Beispiel eines Transfers durch den Schalter 18 verwendet werden, dass aber andere Ausführungsformen jegliche Größe für den Transfer verwenden können. Transfers durch den Schalter können zusätzlich zu den Datenbytes, die übertragen werden, auch ein oder mehrere Bits von Tag-Daten (tag data) enthalten, die andere Informationen tragen, die sich auf die Daten beziehen. Zum Beispiel können in einigen Ausführungsformen die Tag-Daten eine oder mehrere der folgenden Informationen enthalten: eine Anzeige des Starts des Pakets, eine Anzeige der Quelle, den IVC, den next_dest-Wert, verschiedene HT-Daten aus dem PoHT-Schreibbefehl, etc.. Außerdem kann es in einigen Ausführungsformen auch ein Zählungs-Feld (count field) für Pakete geben, das die Anzahl von Bytes angibt, die übertragen werden. In einigen Ausführungsformen kann der Schalter eine Nachladeschnittstelle (reload interface) unterstützen, durch die eine gewährte Quelle oder ein gewährtes Ziel anfordern kann, dass die gewährte Anforderung als eine weitere Anforderung nachgeladen wird (z.B. wenn die Quelle mehr Daten auf diesem SVC besitzt, die übertragen werden sollen, oder wenn das Ziel mehr Platz in diesem VC besitzt, um Daten zu empfangen).
  • Nun wird 6 betrachtet, in der ein Blockdiagramm einer Ausführungsform der H&R-Schaltung 44A gezeigt ist. Die H&R-Schaltungen 44B44C können ähnlich sein. In der Ausführungsform von 6 umfasst die H&R-Schaltung 44A eine Regeltabelle 100, eine Wegetabelle (path table) 102, eine Leitwegtabelle (route table) 104, eine Offset-Schaltung 106, eine Auswahllogikschaltung 108, eine Vergleichslogikschaltung 110, eine Hash-Schaltung 112, eine Extraktions-Schaltung (extract circuit) 114, eine Falt-Schaltung (fold circuit) 116, einen Multiplexer (Mux) 118, ein Addierglied 120, einen Mux 122, und einen Mux 124. Die Offset-Schaltung 106 ist gekoppelt, um Paketdaten zu empfangen, und sie besitzt einen Ausgang, der mit der Auswahllogikschaltung 108, der Hash-Schaltung 112 und der Extraktions-Schaltung 114 gekoppelt ist. Der IVC, der den Paketdaten entspricht, wird für die Auswahllogikschaltung 108, die Hash-Schaltung 112 und die Extraktions-Schaltung 114 vorgesehen. Die Auswahllogik 108 ist mit der Regeltabelle 100 und der Vergleichslogik schaltung 110 gekoppelt, die auch mit der Regeltabelle 100 gekoppelt ist, und ist gekoppelt, um ein Resultat an die Wegetabelle 102 zu liefern. Die Wegetabelle 102 ist mit den Multiplexern 118, 122 und 124, dem Addierglied 120 und der Falt-Schaltung 116 gekoppelt. Der Mux 124 ist mit der Leitwegtabelle 104 gekoppelt. Der Mux 124 ist außerdem gekoppelt, um den SVC und optional die next_dest-Ausgabe der H&R-Schaltung 44A vorzusehen. Die Leitwegtabelle 104 ist gekoppelt, um einen Index von dem Mux 122 zu empfangen, der ebenfalls mit dem Addierglied 120 gekoppelt ist. Das Addierglied 120 ist mit dem Mux 118 gekoppelt, der mit der Falt-Schaltung 116 und der Extraktions-Schaltung 114 gekoppelt ist. Die Falt-Schaltung 116 ist mit der Hash-Schaltung 112 gekoppelt.
  • In einer Ausführungsform kann die H&R-Schaltung 44A eine Anzahl von programmierbaren Regeln unterstützen. Jede Regel wählt Bytes aus den Daten (oder dem IVC) aus und vergleicht die ausgewählten Daten mit einem Operanden der Regel. Jede Regel kann bezüglich Paketdaten ausgewertet werden, und die Wahr/Falsch-Resultate jedes Vergleichs können einen Weg aus einem Satz von Wegen auswählen. Der Weg kann ein SVC sein, ein Index zu einer Leitwegtabelle, die einen SVC ausgibt, oder er kann die Ausgabe einer Hash-Funktion oder einer Extraktionsfunktion als den Index zu der Leitwegtabelle auswählen (addiert zu einer Basisadresse, die ebenfalls Teil der Wegedaten ist). Außerdem kann für HT-Schnittstellen ein next_dest-Wert ausgegeben werden. Der next_dest-Wert zeigt einer Tx-Schaltung 28A28C auf einer HT-Schnittstelle an, welche Basisadresse aus einer Tabelle von Basisadressen für den Schreibbefehl ausgewählt werden soll, der das PoHT-Paket umfasst. Wenn der SVC einen PDI VC anzeigt, kann die H&R-Schaltung 44A außerdem die Zuordnung (mapping) verwenden, die in dem PDI_Map-Register 62 spezifiziert ist, um den PDI VC einer Eingabewarteschlange der PDI 40 zuzuordnen. In anderen Ausführungsformen können die SVC-Speicher in den Speicherstrukturen der H&R-Schaltung 44A direkt die Eingabewarteschlange der PDI 40 spezifizieren.
  • Im allgemeinen können die Regeltabelle 100, die Wegetabelle 102 und die Leitwegtabelle 104 Speicher umfassen, die von Software so programmierbar sind, dass sie SVCs für Pakete gemäß dem oben Gesagten generieren. In einer Implementation können die Einträge der Regeltabelle 100, der Wegetabelle 102 und der Leitwegtabelle 104 in den Adressraum des Systems 10 als Konfigurationsregister abgebildet werden, die von Software gelesen und geschrieben werden können.
  • Jeder Eintrag der Regeltabelle 100 umfasst ein Offset- und Auswahlfeld, und ein Operanden- und Freigabefeld. Das Offset-Feld spezifiziert den Offset eines Wortes (in einer Ausführungsform 4 Bytes) in dem Paket, das mit dem Operanden in dem Operandenfeld verglichen werden soll. Das Freigabefeld (enable field) ist ein Bitvektor, der verwendet wird, um das ausgewählte Wort vor dem Vergleich zu maskieren. Das Auswahlfeld wählt für den Vergleich entweder das von dem Offset spezifizierte Wort aus oder den IVC. Die Auswahllogikschaltung 108 ist gekoppelt, um die Offset- und Auswahlfelder von jedem Eintrag zu erhalten, und ist so aufgebaut, dass sie die spezifizierten Daten aus den Paketdaten oder dem IVC für den Vergleich auswählt. Die Auswahllogikschaltung 108 kann Daten unabhängig für jeden Eintrag auswählen und die Daten der Vergleichslogikschaltung 110 zuführen. Die Vergleichslogikschaltung 110 kann unabhängig alle ausgewählten Daten (maskiert durch das Freigabefeld des entsprechenden Regeltabelleneintrags) mit dem Operanden aus dem entsprechenden Regeltabelleneintrag vergleichen. Die Resultate der Vergleiche werden der Wegetabelle 102 zugeführt. Die Resultate können eine Angabe dahingehend enthalten, ob jeder Vergleich als Resultat ein Wahr- oder Falsch-Ergebnis erzielte. Die Anzahl an Einträgen in der Regeltabelle 100 kann von Ausführungsform zu Ausführungsform variieren. In einer Implementation kann es 16 Regeleinträge geben, die bis zu 16 programmierbare Regeln erlauben. In einer Ausführungsform stehen die Offsets, die in der Regeltabelle spezifiziert sind, in Relation zu einem programmierbaren Offset aus dem Anfang der Paketdaten. Die Offset-Schaltung 106 kann die Paketdaten um den programmierbaren Offset versetzen. In einer Ausführungsform kann der programmierbare Offset direkt sein (d.h. der programmierte Wert kann der Offset sein). In einer anderen Ausführungsform kann der programmierbare Offset indirekt sein (d.h. der programmierte Wert kann ein Offset-Feld in den Paketdaten identifizieren, das den Offset für ein gegebenes Paket trägt). In noch einer anderen Ausführungsform kann der programmierbare Offset so programmierbar sein, dass er entweder direkt oder indirekt ist.
  • Die Wegetabelle 102 kann einen Satz von Einträgen enthalten, die jeweils ein Freigabe- und Testfeld, ein Wegedatenfeld und ein Wegetypfeld umfassen. Das Freigabe- und Testfeld wird verwendet, um zu programmieren, welche Resultate von der Vergleichslogikschaltung 110 verwendet werden, um zu bestimmen, ob der Wegeeintrag für dieses Paket verwendet wird (über Bits in dem Freigabefeld, die jedem Resultat entsprechen), und der Testwert kann angeben, ob das entsprechende Resultat bezüglich wahr und falsch getestet wird. Wenn jedes freigegebene Resultat das Glei che testet, was der Testwert spezifiziert, dann wird der Wegetabelleneintrag ausgewählt. Die Wegetabelle 102 gibt die Wegedaten- und die Wegetypfelder aus dem ausgewählten Wegetabelleneintrag aus. Das Wegetypfeld gibt einen von mehreren Wegetypen an, die die Multiplexer 118, 122 und 124 steuern und die Art der Wegedaten angeben. In einem Direktwegetyp werden der SVC und optional der next_dest-Wert in den Wegedaten spezifiziert. Für den Direktwegetyp wählt der Mux 124 die Paketdaten durch den Mux 124 aus. Wenn der Wegetyp nicht direkt ist, wird die Ausgabe der Leitwegtabelle 104 durch den Mux 124 ausgewählt. In verschiedenen Ausführungsformen kann jede Anzahl von Wegetabelleneinträgen unterstützt werden, wobei sie Anzahlen von Einträgen einschließen, die sich von der Anzahl der Regeltabelleneinträge unterscheiden. In einer Implementation kann die Wegetabelle 102 16 Einträge und einen 17ten (Standard-) Eintrag umfassen, der ausgewählt wird, wenn keiner der anderen 16 Einträge mit dem Resultat der Vergleichslogikschaltung 110 übereinstimmt.
  • Die Leitwegtabelle 104 umfasst mehrere Einträge, von denen jeder einen SVC und einen next_dest-Wert speichert. Die Leitwegtabelle 104 erhält einen Index, der in Abhängigkeit von dem Wegetypfeld auf mehrere mögliche Arten generiert wird. Wenn der Wegetyp ein Index-Wegetyp ist, dann sind die Wegedaten ein Index zu der Leitwegtabelle 104, und die Wegedaten werden von dem Mux 122 ausgewählt. Andernfalls wird die Ausgabe des Addierglieds 120 durch den Mux 122 als der Index zu der Leitwegtabelle 104 ausgewählt.
  • Bei den übrigen Wegetypen können die Wegedaten eine Basisadresse umfassen, die verwendet wird (von dem Addierglied 120), um den Index der Leitwegtabelle zu generieren. In einem Hash-Wegetyp wird die Ausgabe der Hash-Schaltung 112 (ein Hash-Wert) zu der Basisadresse addiert, um den Index zu erzeugen (und wird durch den Mux 118 für das Addierglied 120 ausgewählt). Die Hash-Schaltung 112 kann so programmiert sein, dass sie bis zu 10 Wörter aus den Paketdaten auswählt, die Wörter mit programmierbaren Freigabevektoren maskiert, und diese einer Hash-Funktion unterzieht, um den Hash-Wert zu produzieren. In einer Ausführungsform gibt es 512 Einträge in der Leitwegtabelle 104. In so einer Ausführungsform kann die Hash-Funktion einen 8-Bit-Hash-Wert generieren (der an dem Addierglied 120 zu einer Basisadresse von z.B. 9 Bits addiert wird). Außerdem können die Wegedaten in einigen Ausführungsformen eine Faltungssteuerung (fold control) umfassen, die den Hash-Wert in einen kleineren Wert faltet (z.B. in einer Ausführungsform program mierbar 7 Bits oder 6 Bits), um den Teil der Leitwegtabelle 104 zu reduzieren, der über die Hash-Schaltung 112 ausgewählt werden kann. In einer Implementation unterzieht die Hash-Funktion die oberen zwei Bytes und die unteren zwei Bytes jedes Wortes bitweise einer XOR-Operation, um zwei Bytes zu produzieren, dann unterzieht sie benachbarte Sätze von zwei Bits einer XOR-Operation, um ein Byte (8 Bits) zu produzieren. Die aus jedem Wort resultierenden Bytes können bitweise einer XOR-Operation unterzogen werden, um den Hash-Wert zu erzeugen. In einer Ausführungsform kann die optionale Faltung die Bits 7 und 5 des Hash-Werts einer XOR-Operation unterziehen (wobei die Bits von 7 bis 0 von höchstwertig bis niedrigstwertig numeriert sind), um Bit 5 der Faltung zu erzeugen, das Bit 7 auf Null zu setzen, und kann die restlichen Hash-Wertbits unmodifiziert vorsehen, um eine 7-Bit-Faltung zu bewirken. Um eine 6-Bit-Faltung zu bewirken, kann eine Implementation die Bits 7 und 5 des Hash-Werts einer XOR-Operation unterziehen, um das Bit 5 der Faltung zu erzeugen, die Bits 6 und 4 des Hash-Werts einer XOR-Operation unterziehen, um Bit 4 der Faltung zu erzeugen, die Bits 7 und 6 auf Null zu setzen, und kann die restlichen Hash-Wertbits unmodifiziert vorsehen, um eine 6-Bit-Faltung zu erzeugen. Wenn das Falten nicht ausgewählt wird, sieht die Falt-Schaltung 116 den unmodifizierten Hash-Wert als die Ausgabe vor. In anderen Ausführungsformen können zwei oder mehrere Hash-Funktionen unabhängig voneinander in der Hash-Schaltung 112 programmierbar sein und können unter Verwendung des Wegetypfeldes ausgewählt werden.
  • Die Extraktions-Schaltung 114 kann so programmierbar sein, dass sie zwei Nibbles (Halbbytes)(4 Bits) aus den Paketdaten auswählt, um die 8-Bit-Eingabe für das Addierglied 120 zu produzieren. Die beiden Nibbles können unabhängig voneinander programmiert werden und können somit in dem Paket nicht aufeinanderfolgend sein. In anderen Ausführungsformen können zwei oder mehr Extraktionsfunktionen in die Extraktions-Schaltung 114 programmiert und unter Verwendung des Wegetypfeldes ausgewählt werden. In anderen Ausführungsformen kann das Extraktionsergebnis in einer ähnlichen Weise wie der Hash-Wert gefaltet werden.
  • Während die Ausführungsform von 6 eine Vielfalt von Mechanismen zur Generierung eines SVC vorsieht, können andere Ausführungsformen jede Untergruppe aus einem oder mehreren der direkten SVC-Generierung, des Index von der Wegetabelle zu der Leitwegtabelle, des Hash-Mechanismus oder des Extraktionsme chanismus vorsehen. Es kann jede Größe von Leitwegtabelle unterstützt werden, und somit können die Hash-Wert- und Extraktionsergebnisgrößen variiert werden.
  • Nun wird 7 betrachtet, die ein Automatendiagramm zeigt, welches die Operation einer Ausführungsform des Schalter im Hinblick auf einen SVC veranschaulicht (ein Ziel und eine Eingabewarteschlange oder ein OVC an diesem Ziel). Ein ähnlicher Automat kann bei jedem SVC Anwendung finden.
  • In dem Zustand 70, bei dem das Paket nicht im Fortschreiten ist, kann der Schalter 18 jede Quelle auswählen, um die Daten auf dem SVC zu übertragen. Im Zustand 70 kann der Schalter 18 jeden Auswahlmechanismus verwenden, um aus den Requestern für den SVC auszuwählen. In einer Ausführungsform verwendet der Schalter 18 ein "Round Robin"-Auswahlverfahren für die Eingabewarteschlangen der PDI 40 und verwendet ein programmierbares gewichtetes Round-Robin-Verfahren mit Prioritätsschema für die Tx-Schaltungen 28A28C. In dem programmierbaren gewichteten Round-Robin-Verfahren mit Prioritätsschema kann jede Quelle als hohe Priorität oder niedrige Priorität programmiert werden und kann mit einer Wichtung versehen werden. In einer Implementation verwaltet der Schalter Defizitzähler, die angeben, wie viele Transfers jede Quelle nicht in der Lage war, auf dem SVC zu übertragen (auf der Grundlage ihrer Wichtung), und wählt die anfordernde Quelle mit dem höchsten Defizit aus.
  • Wenn eine Quelle einmal ausgewählt worden ist, geht der Schalter 18 zu dem Zustand 72 über, bei dem das Paket fortschreitet. In diesem Zustand registriert der Schalter 18 die Quelle, die für diesen SVC gewährt wurde, und maskiert die Anforderungen von anderen Quellen. Somit ist die Quelle, die vorher gewährt wurde, die einzige Quelle, die auf dem SVC zugelassen werden wird. Der Schalter kann andere Quellen für andere SVCs zulassen, die dem gleichen Ziel entsprechen (z.B. andere Eingabewarteschlangen oder andere OVCs). Der Schalter 18 bleibt in diesem Zustand, bis der Quelle eine Anforderung gewährt wird und die EOP-Anzeige mit der Anforderung das Ende des Pakets anzeigt. Der Schalter 18 geht dann in den Zustand 70 über und wählt die nächste Quelle aus.
  • Nun wird 8 betrachtet, die ein Blockdiagramm eines Mediums 300 für den Zugriff durch den Computer zeigt, das eine oder mehrere Datenstrukturen umfasst, die repräsentativ für die Schaltungen sind, die in dem System 10 und/oder dem Paketverarbeitungssystem 80 enthalten sind. Allgemein gesagt kann ein Medium für den Zugriff durch den Computer Speichermedien wie magnetische oder optische Medien umfassen, z.B. Disk, CD-ROM oder DVD-ROM, nichtflüchtige und flüchtige Speichermedien wie z.B. RAM (z.B. SDRAM, RDRAM, SRAM, etc.), ROM, etc. sowie auch Medien, auf die über Übertragungsmedien oder Signale zugegriffen werden kann, wie z.B. elektrische, elektromagnetische oder digitale Signale, die über ein Kommunikationsmedium wie z.B. ein Netz und/oder eine drahtlose Verbindungsleitung übertragen werden.
  • Im allgemeinen kann die Datenstruktur/können die Datenstrukturen der Schaltungen auf dem Medium 300 für den Zugriff durch den Computer von einem Programm gelesen und direkt oder indirekt verwendet werden, um die Hardware herzustellen, die die Schaltungsanordnung umfasst. Zum Beispiel kann die Datenstruktur/können die Datenstrukturen eine oder mehrere Verhaltensebenen-Beschreibungen oder Register-Transfer-Level-(RTL)-Beschreibungen von Hardwarefunktionalitäten in einer High-Level-Designsprache (HDL) wie z.B. Verilog oder VHDL umfassen. Die Beschreibung(en) kann/können von einem Synthesetool gelesen werden, das die Beschreibung synthetisieren kann, um eine oder mehrere Netzliste(n) zu erzeugen, die Listen von Gattern aus einer Synthesebibliothek umfassen. Die Netzliste(n) umfasst/umfassen eine Gruppe von Gattern, die auch die Funktionalität der Hardware darstellen, die die Schaltungen umfasst. Die Netzliste(n) können dann platziert und geroutet werden, um einen oder mehrere Datensätze herzustellen, die geometrische Formen beschreiben, die auf die Masken angewendet werden sollen. Die Masken können dann in verschiedenen Halbleiterfabrikationsschritten verwendet werden, um eine Halbleiterschaltung bzw. Halbleiterschaltungen herzustellen, die dem Schaltungsaufbau entsprechen. Alternativ dazu kann/können die Datenstrukturen) auf dem Medium 300 für den Zugriff durch den Computer je nach Wunsch die Netzliste(n)(mit oder ohne die Synthesebibliothek) oder der Datensatz/die Datensätze sein. In noch einer anderen Alternative können die Datenstrukturen die Ausgabe eines schematischen Programms umfassen, oder Netzliste(n) oder einen Datensatz bzw. Datensätze, die daraus abgeleitet wurden. Die Datenstrukturen) kann/können einen schaltungsdefinierenden Mechanismus für das System 10 darstellen.
  • Das Medium 300 für den Zugriff durch den Computer umfasst zwar eine Repräsentation des Systems 10 und/oder des Paketverarbeitungssystems 80, aber andere Ausführungsformen können eine Repräsentation eines jeden Teils des Systems 10 und/oder des Paketverarbeitungssystems 80 umfassen (z.B. die Prozessoren 12A12N, die Speichersteuerung 14, die Verbindung 22, die Paket-DMA-Schaltung 16 (oder Teile davon), den Schalter 18, die Schnittstellenschaltungen 22A22C (oder Teile davon), die Systeme 10A und/oder 10B (oder Teile davon), die Paketquellen-/-zieleinrichtungen 90A90D, oder Teile davon, etc.).
  • Zahlreiche Variationen und Modifikationen werden den Fachleuten auf diesem Gebiet offensichtlich werden, wenn die oben genannte Offenbarung vollständig verstanden ist. Es ist beabsichtigt, dass die nachfolgenden Ansprüche so interpretiert werden, dass sie alle derartigen Variationen und Modifikationen umfassen.

Claims (15)

  1. Vorrichtung mit: einer ersten Empfangsschaltung (20A), die so aufgebaut ist, dass sie mit einer ersten Schnittstelle (30A) koppelt, um eine erste Vielzahl von Paketen zu empfangen, wobei die erste Empfangsschaltung (20A) so aufgebaut ist, dass sie für jedes Paket der ersten Vielzahl von Paketen ein Ziel aus einer Vielzahl von Zielen auswählt; einer zweiten Empfangsschaltung (20B), die so aufgebaut ist, dass sie mit einer zweiten Schnittstelle (30B) koppelt, um eine zweite Vielzahl von Paketen zu empfangen, wobei die zweite Empfangsschaltung (20B) so aufgebaut ist, dass sie für jedes Paket der zweiten Vielzahl von Paketen ein Ziel aus einer Vielzahl von Zielen auswählt; einer Vielzahl von Übertragungsschaltungen (28A, 28B, 28C), die so aufgebaut sind, dass sie Pakete auf jeweiligen Schnittstellen (30A, 30B, 30C) übertragen, wobei die Vielzahl von Zielen die Vielzahl von Übertragungsschaltungen (28A, 28B, 28C) enthält; einer Paket-DMA (Direct Memory Access; Direktspeicherzugriffs)-Schaltung (16), wobei die Paket-DMA-Schaltung (16) so aufgebaut ist, dass sie Pakete zu und von einer Speichersteuerung (14) kommuniziert, und wobei die Paket-DMA-Schaltung (16) eines der Vielzahl von Zielen ist; und einem Schalter (18), der direkt mit der ersten Empfangsschaltung (20A), der zweiten Empfangsschaltung (20B), der Paket-DMA-Schaltung (16) und der Vielzahl von Übertragungsschaltungen (28A, 28B, 28C) gekoppelt ist, wobei der Schalter (18) so aufgebaut ist, dass er die erste Empfangsschaltung (20A) und die zweite Empfangsschaltung (20B) koppelt, um eines der Vielzahl von Zielen auszuwählen, um Pakete von der ersten Empfangsschaltung (20A) und der zweiten Empfangsschaltung (20B) an die ausgewählten Ziele der Vielzahl von Zielen zu übermitteln; wobei die erste Empfangsschaltung (20A), die zweite Empfangsschaltung (20B), die Vielzahl von Zielen und der Schalter (18) auf einer integrierten Schaltung integriert sind.
  2. Vorrichtung nach Anspruch 1, wobei die Vielzahl von Übertragungsschaltungen (28A, 28B) eine erste Übertragungsschaltung (28A) aufweist, die so aufgebaut ist, dass sie mit der ersten Schnittstelle (30A) koppelt, und eine zweite Übertragungsschaltung (28B) aufweist, die so aufgebaut ist, dass sie mit der zweiten Schnittstelle (30B) koppelt.
  3. Vorrichtung nach Anspruch 1 oder 2, wobei die jeweiligen Schnittstellen (30A, 30B) jeweils eine Vielzahl von virtuellen Kanälen unterstützen, und wobei die erste Empfangsschaltung (20A) des weiteren so aufgebaut ist, dass sie für jedes Paket einen der Vielzahl von virtuellen Kanälen an dem Ziel dieses Pakets auswählt, und wobei die zweite Empfangsschaltung (20B) des weiteren so aufgebaut ist, dass sie für jedes Paket einen der Vielzahl von virtuellen Kanälen an dem Ziel dieses Pakets auswählt.
  4. Vorrichtung nach Anspruch 3, wobei, wenn (i) die erste Empfangsschaltung (20A) ein erstes Paket für ein erstes Ziel und einen ersten virtuellen Kanal an dem ersten Ziel empfängt und (ii) die zweite Empfangsschaltung (20B) ein zweites Paket für das erste Ziel und den ersten virtuellen Kanal an dem ersten Ziel empfängt, der Schalter (18) so aufgebaut ist, dass er eine aus der ersten Empfangsschaltung (20A) oder der zweiten Empfangsschaltung (20B) ausgewählte Empfangsschaltung auswählt, um das erste Paket oder das zweite Paket zu übertragen, und wobei der Schalter (18) so aufgebaut ist, dass er das Auswählen der anderen der ersten Empfangsschaltung (20A) oder der zweiten Empfangsschaltung (20B) verhindert, bis die ausgewählte Empfangsschaltung eine Paketgrenze erreicht hat.
  5. Vorrichtung nach Anspruch 3, wobei die erste Empfangsschaltung (20A) so programmiert werden kann, dass sie das Ziel für jedes der ersten Vielzahl von Paketen auswählt.
  6. Vorrichtung nach Anspruch 5, wobei die erste Empfangsschaltung (20A) eine Hash-and-Route-Schaltung (44A) aufweist, die so gekoppelt ist, dass sie we nigstens einen Teil jedes der Vielzahl von Paketen und einen virtuellen Kanal, auf dem dieses Paket empfangen wird, empfängt, und wobei die Hash-and-Route-Schaltung (44A) so programmiert werden kann, dass sie das Ziel im Ansprechen auf einen oder beide des Teils dieses Pakets und des virtuellen Kanals, auf dem dieses Paket empfangen wird, auswählt.
  7. Vorrichtung nach einem der Ansprüche 1 bis 6, die des weiteren die in die integrierte Schaltung integrierte Speichersteuerung (14) aufweist, wobei die Speichersteuerung (14) so aufgebaut ist, dass sie mit einem Speicher (24) koppelt, und wobei die Paket-DMA-Schaltung (16) so aufgebaut ist, dass sie Pakete, die von der Paket-DMA-Schaltung (16) empfangen werden, zur Speicherung in dem Speicher (24) an die Speichersteuerung (14) überträgt.
  8. Vorrichtung nach einem der Ansprüche 1 bis 7, wobei die Paket-DMA-Schaltung (16) des weiteren so aufgebaut ist, dass sie Pakete an eines der Vielzahl von Zielen überträgt.
  9. Vorrichtung nach einem der Ansprüche 1 bis 8, wobei der Schalter (18) so aufgebaut ist, dass er die Paket-DMA-Schaltung (16) mit einem der Vielzahl von Zielen koppelt.
  10. Vorrichtung nach einem der Ansprüche 1 bis 9, wobei die erste Empfangsschaltung (20A) so aufgebaut ist, dass sie ein erstes Ziel der Vielzahl von Zielen für ein erstes Paket der ersten Vielzahl von Paketen auswählt, und wobei die erste Empfangsschaltung (20A) so aufgebaut ist, dass sie ein zweites Ziel der Vielzahl von Zielen für ein zweites Paket der ersten Vielzahl von Paketen auswählt, wobei das erste Ziel unterschiedlich zu dem zweiten Ziel ist.
  11. Verfahren mit folgenden Schritten: Empfangen einer ersten Vielzahl von Paketen in einer ersten Empfangsschaltung (20A) einer integrierten Schaltung; Auswählen eines Ziels aus einer Vielzahl von Zielen für jedes Paket der ersten Vielzahl von Paketen; Empfangen einer zweiten Vielzahl von Paketen in einer zweiten Empfangsschaltung (20B) der integrierten Schaltung; Auswählen eines Ziel aus einem der Vielzahl von Zielen für jedes Paket der zweiten Vielzahl von Paketen; Koppeln der ersten Empfangsschaltung (20A) und der zweiten Empfangsschaltung (20B), um eines der Vielzahl von Zielen über einen Schalter (18) in der integrierten Schaltung zur Paketübertragung auszuwählen, wobei die integrierte Schaltung eine Vielzahl von Übertragungsschaltungen (28A, 28B, 28C) aufweist, die so aufgebaut sind, dass sie Pakete auf jeweiligen Schnittstellen (30A, 30B) der integrierten Schaltung übertragen, und wobei die Vielzahl von Zielen die Vielzahl von Übertragungsschaltungen (28A, 28B, 28C) enthält, und wobei die integrierte Schaltung des weiteren eine Paket-DMA-Schaltung (16) aufweist, wobei die Paket-DMA-Schaltung (16) so aufgebaut ist, dass sie Pakete zu und von einer Speichersteuerung (14) kommuniziert, und wobei die Paket-DMA-Schaltung (16) eine der Vielzahl von Zielen ist, und wobei der Schalter (18) direkt mit der ersten Empfangsschaltung (20A), der zweiten Empfangsschaltung (20B), der Paket-DMA-Schaltung (16) und der Vielzahl von Übertragungsschaltungen (28A, 28B, 28C) gekoppelt ist.
  12. Verfahren nach Anspruch 11, wobei die jeweiligen Schnittstellen (30A, 30B) jeweils eine Vielzahl von virtuellen Kanälen unterstützen, und wobei das Auswählen eines Zieles aus einer Vielzahl von Zielen für jedes Paket der ersten Vielzahl von Paketen für jedes Paket das Auswählen eines der Vielzahl von virtuellen Kanälen an dem Ziel dieses Pakets aufweist, und wobei das Auswählen eines Ziels aus einem der Vielzahl von Zielen für jedes Paket der zweiten Vielzahl von Paketen für jedes Paket das Auswählen eines der Vielzahl von virtuellen Kanälen an dem Ziel dieses Pakets aufweist.
  13. Verfahren nach einem der Ansprüche 11 oder 12, das des weiteren aufweist: wenn (i) die erste Empfangsschaltung (20A) ein erstes Paket für ein erstes Ziel und einen ersten virtuellen Kanal an dem ersten Ziel empfängt und (ii) die zweite Empfangsschaltung (20B) ein zweites Paket für das erste Ziel und den ersten virtuellen Kanal an dem ersten Ziel empfängt: Auswählen einer aus der ersten Empfangsschaltung (20A) oder der zweiten Empfangsschaltung (20B) ausgewählten Empfangsschaltung, um das erste Paket oder das zweite Paket zu übertragen; und Verhindern des Auswählens der anderen der ersten Empfangsschaltung (20A) oder der zweiten Empfangsschaltung (20B), bis die ausgewählte Empfangsschaltung eine Paketgrenze erreicht hat.
  14. Verfahren nach einem der Ansprüche 11 bis 13, das des weiteren das Programmieren der ersten Empfangsschaltung (20A) aufweist, um das Ziel für jedes der ersten Vielzahl von Paketen auszuwählen.
  15. Verfahren nach Anspruch 14, wobei die erste Empfangsschaltung (20A) eine Hash-and-Route-Schaltung (44A) aufweist, die so gekoppelt ist, dass sie wenigstens einen Teil jedes der Vielzahl von Paketen und einen virtuellen Kanal, auf dem dieses Paket empfangen wird, empfängt, und wobei das Programmieren der ersten Übertragungsschaltung (28A) zum Auswählen des Ziels für jedes der ersten Vielzahl von Paketen das Programmieren der Hash-and-Route-Schaltung (44A) zum Auswählen des Ziels im Ansprechen auf einen oder beide des Teils dieses Pakets und des virtuellen Kanals, auf dem dieses Paket empfangen wird, enthält.
DE60203358T 2001-11-20 2002-11-20 Systeme, welche Paketschnittstellen und Paket-DMA (Direct Memory Access) Schaltkreise beinhalten, um Paketströme zu teilen und zusammenzusetzen Expired - Lifetime DE60203358T2 (de)

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
US33178901P 2001-11-20 2001-11-20
US331789P 2001-11-20
US34471301P 2001-12-24 2001-12-24
US344713P 2001-12-24
US34871702P 2002-01-14 2002-01-14
US34877702P 2002-01-14 2002-01-14
US348777P 2002-01-14
US348717P 2002-01-14
US38074002P 2002-05-15 2002-05-15
US380740P 2002-05-15
US270016 2002-10-11
US10/270,016 US7227870B2 (en) 2001-11-20 2002-10-11 Systems including packet interfaces, switches, and packet DMA circuits for splitting and merging packet streams

Publications (2)

Publication Number Publication Date
DE60203358D1 DE60203358D1 (de) 2005-04-28
DE60203358T2 true DE60203358T2 (de) 2006-02-09

Family

ID=27559481

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60203358T Expired - Lifetime DE60203358T2 (de) 2001-11-20 2002-11-20 Systeme, welche Paketschnittstellen und Paket-DMA (Direct Memory Access) Schaltkreise beinhalten, um Paketströme zu teilen und zusammenzusetzen

Country Status (4)

Country Link
US (2) US7227870B2 (de)
EP (1) EP1313272B1 (de)
AT (1) ATE291805T1 (de)
DE (1) DE60203358T2 (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7117210B2 (en) 2001-09-06 2006-10-03 Danger, Inc. System and method of distributing a file by email
US7200024B2 (en) * 2002-08-02 2007-04-03 Micron Technology, Inc. System and method for optically interconnecting memory devices
US7117316B2 (en) * 2002-08-05 2006-10-03 Micron Technology, Inc. Memory hub and access method having internal row caching
US7149874B2 (en) * 2002-08-16 2006-12-12 Micron Technology, Inc. Memory hub bypass circuit and method
US7836252B2 (en) 2002-08-29 2010-11-16 Micron Technology, Inc. System and method for optimizing interconnections of memory devices in a multichip module
US7102907B2 (en) * 2002-09-09 2006-09-05 Micron Technology, Inc. Wavelength division multiplexed memory module, memory system and method
US7324564B2 (en) * 2003-02-20 2008-01-29 Sun Microsystems, Inc. Transmitting odd-sized packets over a double data rate link
US7120727B2 (en) 2003-06-19 2006-10-10 Micron Technology, Inc. Reconfigurable memory module and method
US7428644B2 (en) * 2003-06-20 2008-09-23 Micron Technology, Inc. System and method for selective memory module power management
US7260685B2 (en) * 2003-06-20 2007-08-21 Micron Technology, Inc. Memory hub and access method having internal prefetch buffers
US7389364B2 (en) * 2003-07-22 2008-06-17 Micron Technology, Inc. Apparatus and method for direct memory access in a hub-based memory system
US20050050237A1 (en) * 2003-08-28 2005-03-03 Jeddeloh Joseph M. Memory module and method having on-board data search capabilities and processor-based system using such memory modules
US7194593B2 (en) * 2003-09-18 2007-03-20 Micron Technology, Inc. Memory hub with integrated non-volatile memory
US6981074B2 (en) * 2003-10-14 2005-12-27 Broadcom Corporation Descriptor-based load balancing
US7120743B2 (en) * 2003-10-20 2006-10-10 Micron Technology, Inc. Arbitration system and method for memory responses in a hub-based memory system
US7783769B2 (en) 2004-03-31 2010-08-24 Intel Corporation Accelerated TCP (Transport Control Protocol) stack processing
US20060031603A1 (en) * 2004-08-09 2006-02-09 Bradfield Travis A Multi-threaded/multi-issue DMA engine data transfer system
US7404040B2 (en) * 2004-12-30 2008-07-22 Intel Corporation Packet data placement in a processor cache
US7643495B2 (en) * 2005-04-18 2010-01-05 Cisco Technology, Inc. PCI express switch with encryption and queues for performance enhancement
US20060267820A1 (en) * 2005-05-16 2006-11-30 Swoboda Gary L Tracing sources with export routing information provided by the source
US7480747B2 (en) * 2005-06-08 2009-01-20 Intel Corporation Method and apparatus to reduce latency and improve throughput of input/output data in a processor
US8031706B2 (en) * 2005-10-31 2011-10-04 Agere Systems Inc. Circuitry for determining network operations in a network device by addressing lookup tables with contents of protocol header fields
US20070097858A1 (en) * 2005-11-01 2007-05-03 Lesartre Gregg B Method and computer system for employing an interconnection fabric providing multiple communication paths
US7817629B2 (en) * 2006-05-12 2010-10-19 Agere Systems Inc. Methods and apparatus for performing network operations on packets of data in response to content of particular user-specified protocol header fields
US7830905B2 (en) * 2007-04-20 2010-11-09 Cray Inc. Speculative forwarding in a high-radix router
US8176560B2 (en) * 2008-05-14 2012-05-08 International Business Machines Corporation Evaluation of tamper resistant software system implementations
US9047417B2 (en) 2012-10-29 2015-06-02 Intel Corporation NUMA aware network interface
US10684973B2 (en) 2013-08-30 2020-06-16 Intel Corporation NUMA node peripheral switch
US11036650B2 (en) * 2019-09-19 2021-06-15 Intel Corporation System, apparatus and method for processing remote direct memory access operations with a device-attached memory
US20210112132A1 (en) * 2020-12-21 2021-04-15 Nitish Paliwal System, apparatus and method for handling multi-protocol traffic in data link layer circuitry

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4788679A (en) * 1986-09-02 1988-11-29 Nippon Telegraph And Telephone Corporation Packet switch with variable data transfer rate links
CH670715A5 (de) 1986-10-03 1989-06-30 Bbc Brown Boveri & Cie
US5765011A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5963745A (en) * 1990-11-13 1999-10-05 International Business Machines Corporation APAP I/O programmable router
DE59507871D1 (de) * 1994-07-12 2000-04-06 Ascom Ag Vorrichtung zur Vermittlung in digitalen Datennetzen für asynchronen Transfermodus
EP0735487B1 (de) * 1995-03-31 2001-10-31 Sun Microsystems, Inc. Schnelle Zweitor-Cachesteuerungsschaltung für Datenprozessoren in einem paketvermittelten cachekohärenten Multiprozessorsystem
US6185222B1 (en) * 1995-09-28 2001-02-06 Cisco Technology, Inc. Asymmetric switch architecture for use in a network switch node
US5805920A (en) 1995-11-13 1998-09-08 Tandem Computers Incorporated Direct bulk data transfers
US5961623A (en) * 1996-08-29 1999-10-05 Apple Computer, Inc. Method and system for avoiding starvation and deadlocks in a split-response interconnect of a computer system
WO1998015155A1 (de) 1996-09-30 1998-04-09 Siemens Aktiengesellschaft Verfahren zur mehrpunktverbindung in einem atm-übertragungssystem mit verbindungsindividuellen warteschlangen
JPH10154100A (ja) * 1996-11-25 1998-06-09 Canon Inc 情報処理システム及び装置及びその制御方法
US6298370B1 (en) * 1997-04-04 2001-10-02 Texas Instruments Incorporated Computer operating process allocating tasks between first and second processors at run time based upon current processor load
FR2762418B1 (fr) * 1997-04-17 1999-06-11 Alsthom Cge Alcatel Procede de gestion d'une memoire partagee
JP3524337B2 (ja) 1997-07-25 2004-05-10 キヤノン株式会社 バス管理装置及びそれを有する複合機器の制御装置
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
US5953314A (en) * 1997-08-28 1999-09-14 Ascend Communications, Inc. Control processor switchover for a telecommunications switch
FR2771573B1 (fr) 1997-11-27 2001-10-19 Alsthom Cge Alkatel Element de commutation de paquets a memoires tampons
JP3563257B2 (ja) 1998-02-20 2004-09-08 Necエレクトロニクス株式会社 Atmスイッチ回路
US6185520B1 (en) * 1998-05-22 2001-02-06 3Com Corporation Method and system for bus switching data transfers
US6226338B1 (en) * 1998-06-18 2001-05-01 Lsi Logic Corporation Multiple channel data communication buffer with single transmit and receive memories
US6195739B1 (en) * 1998-06-29 2001-02-27 Cisco Technology, Inc. Method and apparatus for passing data among processor complex stages of a pipelined processing engine
US6266731B1 (en) * 1998-09-03 2001-07-24 Compaq Computer Corporation High speed peripheral interconnect apparatus, method and system
US6266705B1 (en) * 1998-09-29 2001-07-24 Cisco Systems, Inc. Look up mechanism and associated hash table for a network switch
US6631401B1 (en) 1998-12-21 2003-10-07 Advanced Micro Devices, Inc. Flexible probe/probe response routing for maintaining coherency
US6697359B1 (en) * 1999-07-02 2004-02-24 Ancor Communications, Inc. High performance switch fabric element and switch systems
US6922408B2 (en) * 2000-01-10 2005-07-26 Mellanox Technologies Ltd. Packet communication buffering with dynamic flow control
US6731631B1 (en) * 2000-08-11 2004-05-04 Paion Company, Limited System, method and article of manufacture for updating a switching table in a switch fabric chipset system

Also Published As

Publication number Publication date
EP1313272A1 (de) 2003-05-21
DE60203358D1 (de) 2005-04-28
US20070291781A1 (en) 2007-12-20
ATE291805T1 (de) 2005-04-15
EP1313272B1 (de) 2005-03-23
US7680140B2 (en) 2010-03-16
US7227870B2 (en) 2007-06-05
US20030095559A1 (en) 2003-05-22

Similar Documents

Publication Publication Date Title
DE60203358T2 (de) Systeme, welche Paketschnittstellen und Paket-DMA (Direct Memory Access) Schaltkreise beinhalten, um Paketströme zu teilen und zusammenzusetzen
DE60207177T2 (de) System, welches zwei oder mehr Paketschnittstellen, einen Schalter, einen gemeinsamen Paket-DMA (Direct Memory Access)-Schaltkreis sowie einen L2 (Level 2) Cache aufweist
DE60203469T2 (de) System mit Schnittstellen und einem Schalter für die Trennung von kohärentem und nichtkohärentem Datenpaketverkehr
DE60202926T2 (de) Multicomputersystem mit konfigurierbaren Schnittstellen für flexible Systemkonfigurationen
DE60217221T2 (de) Ein-Chip System zur Paketverarbeitung
DE60221030T2 (de) Verfahren, einrichtung und rechnerprogramm für die entkapselung und verkapselung von paketen mit mehreren kopffeldern
DE60130079T2 (de) Verfahren und vorrichtung zur paketvermittlung mittels eines geteilten pufferspeichers
DE60021846T2 (de) Leitweglenkungsanordnung
US8014390B2 (en) Policy based routing using a fast filter processor
DE60006842T2 (de) Multiprozessor-Node-Controller-Schaltung und Verfahren
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE69726995T2 (de) Mehrfachsende-Leitweglenkung in mehrstufigen Netzen
DE69133257T2 (de) Vorrichtung und verfahren zur schnellen paketvermittlung
US7584316B2 (en) Packet manager interrupt mapper
US20080198867A1 (en) Hash and Route Hardware with Parallel Routing Scheme
DE60201650T2 (de) Systeme, welche eine Mischung aus paketartigem, kohärentem und nicht-kohärentem Verkehr verwenden, um die Übertragung zwischen Systemen zu optimieren
DE112005002364T5 (de) Heterogene Prozessoren mit gemeinsamem Cache
DE69819648T2 (de) Zweitorpuffer
DE69631265T2 (de) Vermittlungssystem
DE602004009574T2 (de) System und verfahren zum modifizieren von daten, die von einer quelle zu einem bestimmungsort übermittelt werden
DE102018204861A1 (de) Einzelner Umsetzungstabelleneintrag für symmetrische Flüsse
US8170019B2 (en) CPU transmission of unmodified packets
DE69731093T2 (de) Adressierbare, schnelle Zähleranordnung
US7447208B2 (en) Configuration access mechanism for packet switching architecture
US6826180B1 (en) Communication packet processor with a look-up engine and content-addressable memory for storing summation blocks of context information for a core processor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, 80639 M