-
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 12A–12N,
eine Speichersteuerung 14, eine Paket-DMA-Schaltung 16, einen Schalter 18 und
einen Satz von Schnittstellenschaltungen 20A–20C.
Das System 10 umfasst eine Verbindung 22, mit
der die Prozessoren 12A–12N, 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 20A–20C umfassen jede
eine Empfangsschaltung (Rx-Schaltung) 26A–26C und
eine Übertragungsschaltung
(Tx-Schaltung) 28A–28C. Das
System 10 ist mit einem Satz von Schnittstellen 30A–30C durch
die jeweiligen Schnittstellenschaltungen 20A–20C gekoppelt.
Die Schnittstellenschaltungen 20A–20C sind mit dem
Schalter 18 gekoppelt, der außerdem mit der Paket-DMA-Schaltung 16 gekoppelt
ist.
-
Die
Schnittstellenschaltungen 20A–20C sind jeweils
so aufgebaut, dass sie Pakete auf den jeweiligen Schnittstellen 30A–30C empfangen
und übertragen,
mit denen sie verbunden sind. Die Rx-Schaltungen 26A–26C handhaben
das Empfangen von Paketen von den Schnittstellen 30A–30C,
und die Tx-Schaltungen 28A–28C handhaben die Übertragung
von Paketen auf den Schnittstellen 30A–30C.
-
Jede
der Schnittstellen 30A–30C 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 20A–20C so aufbaubar
sein, dass sie entweder auf der SPI-4-Schnittstelle oder auf der
HT-Schnittstelle
kommunizieren kann. Jede Schnittstellenschaltung 20A–20C kann
individuell programmierbar sein, wobei verschiedene Kombinationen
aus den HT- und den SPI-4-Schnittstellen als Schnittstellen 30A–30C 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 20A–20C (und
noch genauer die Rx-Schaltungen 26A–26C 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 26A–26C ein Ziel für das Paket
in dem System 10 bestimmen. Das Ziel kann eine der Tx-Schaltungen 28A–28C 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 26A–26C (zusammen
mit dem Schalter 18) einen empfangenen Paketstrom unter einer
Vielzahl von Zielen aufteilen.
-
Jede
der Schnittstellenschaltungen 20A–20C (und noch genauer
die Tx-Schaltungen 28A–28C 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 26A–26C 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 28A–28C 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 12A–12N 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 28A–28C ü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 12A–12N 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 26A–26C 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 26A–26C 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 28A–28C 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 26A–26C ein
Paket empfängt
und bestimmt, dass das Ziel für
das Paket eine Tx-Schaltung 28A–28C ist, dann kann
die Rx-Schaltung 26A–26C das
Paket durch den Schalter 18 zu der Tx-Schaltung 28A–28C ü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 12A–12N 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 12A–12N 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 26A–26C zu
einer Tx-Schaltung 28A–28C geroutet werden,
die mit einer Schnittstelle des anderen Systems 10 gekoppelt
ist, und die Rx-Schaltung 28A–28C 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 26A–26C bzw. 28A–28C von
einer Paketquelleneinrichtung zu einer Paketzieleinrichtung geroutet werden,
ohne dass in den Systemen 10 eine Verarbeitung durch die
Prozessoren 12A–12N erfolgt.
-
Die
Paket-DMA-Schaltung 16 umfasst Schaltungsanordnungen, die
von den Schnittstellenschaltungen 20A–20C gemeinsam benutzt
werden. Die Schaltungsanordnung der Paket-DMA-Schaltung 16 kommuniziert
Pakete zwischen den Schnittstellenschaltungen 20A–20C 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 20A–20C 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 12A–12N ausgeführt wird.
Die Software kann bestimmen, dass ein gegebenes Paket in dem System 10 beendet
wird. Alternativ dazu können
die Prozessoren 12A–12N bestimmen,
dass das Paket auf einer der Schnittstellen 30A–30C 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 20A–20C auslesen
kann, die mit der Schnittstelle 30A–30C gekoppelt ist,
auf der das Paket übertragen
werden soll.
-
Der
Schalter 18 kann selektiv die Schnittstellenschaltungen 20A–20C (und
vor allem die Rx-Schaltungen 26A–26C in der veranschaulichten Ausführungsform)
mit anderen Schnittstellenschaltungen 20A–20C (und
vor allem den Tx-Schaltungen 28A–28C 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 20A–20C (und vor
allem den Tx-Schaltungen 28A–28C in der veranschaulichten
Ausführungsform)
koppeln, um die Paketdaten von der Paket-DMA-Schaltung 16 zu
den Schnittstellenschaltungen 20A–20C für die Übertragung
auf der entsprechenden Schnittstelle 30A–30C zu
transferieren. Der Schalter 18 kann Anforderungs-/Gewährungsschnittstellen
für jede
der Schnittstellenschaltungen 20A–20C 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 26A–26C und
die Paket-DMA-Schaltung 16) sowie einen Ausgabepfad zu jedem
Ziel (die Tx-Schaltungen 28A–28C 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 30A–30C 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 30A–30C, 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 12A–12N 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 12A–12N 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 12A–12N,
die Speichersteuerung 14, die Schnittstellenschaltungen 20A–20C,
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 20A–20C 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 26A–26C und die Tx-Schaltungen 28A–28C 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 26A–26C 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 26A–26C 16
IVCs (numeriert von 0–15
in 2). In ähnlicher
Weise unterstützt
jede Tx-Schaltung 28A–28C 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 26A–26C umfasst
in der veranschaulichten Ausführungsform
eine Hash-and-Route-(H&R)-Schaltung 44A–44C,
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 28A–28C 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 44A–44C die
IVCs einem von 16 PDI VCs zuordnen (numeriert von 0–15 in 2,
wobei durchgehende Linien ausgehend von den H&R-Schaltungen 44A–44C 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 44A–44C die
IVCs den PDI-Eingabewarteschlangen direkt zuordnen (z.B. ohne den
Zwischenschritt der PDI VCs). Außerdem können die H&R-Schaltungen 44A–44C Pakete
von einem IVC zu einem OVC in einer der Tx-Schaltungen 28A–28C zuordnen,
was für die
H&R-Schaltung 44A mit
gestrichelten Linien durch den Block der SVCs zu den Tx-Schaltungen 28A–28C veranschaulicht
ist.
-
Die
H&R-Schaltungen 44A–44C 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 28A–28C).
Somit können
die H&R-Schaltungen 44A–44C 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 28A–28C 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 44A–44C 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 26A–26B keine
H&R-Schaltungen
umfassen und können
stattdessen eine programmierbare oder festgelegte Zuordnung jedes
IVC zu einem spezifizierten SVC verwenden (Tx-Schaltung 28A–28C 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 26A–26C direkt
zu einer Tx-Schaltung 28A–28C geroutet
werden, die Paket-DMA-Schaltung 16, den Speicher 24 und
die Verarbeitung durch die Prozessoren 12A–12N umgehen.
-
Die
Ausgabewarteschlangen der PDO 42 werden ebenfalls verschiedenen
Tx-Schaltungen 28A–28C und
den OVCs in diesen Tx-Schaltungen 28A–28C 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 28A–28C 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 44A–44C und
der PDI 40 eine beispielhafte Zuordnung von den PDI VCs
der H&R-Schaltungen 44A–44C 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 26A–26C 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 44A–44C werden
zu den Eingabewarteschlangen 24–31
gemerged bzw. zusammengesetzt. Wenn die Zuordnungen die PDO VCs
von verschiedenen H&R-Schaltungen 44A–44C zusammensetzen,
kann der Schalter 18 das Zusammensetzen an Paketgrenzen
durchführen.
Das heißt, wenn
eine gegebene Rx-Schaltung 26A–26C gewährt wurde,
um ein Paket zu einer Eingabewarteschlange zu übertragen, die unter den Rx-Schaltungen 26A–26C zusammengesetzt
wird, dann verhindert der Schalter eine Gewährung einer anderen Rx-Schaltung 26A–26C auf
dieser Eingabewarteschlange, bis die gewährte Rx-Schaltung 26A–26C eine
Paketgrenze erreicht. Es kann jegliche Kombination aus PDI VCs von
verschiedenen Rx-Schaltungen 26A–26C 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 28A–28C 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 26A–26C die
IVCs den OVCs zuordnen, und somit kann es zu einem Zusammensetzen
von Paketen von den Rx-Schaltungen 26A–26C 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 26A–26C zu
OVCs in den Tx-Schaltungen 28A–28C 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 28A–28C. 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 26A–26C zu
einer gegebenen Tx-Schaltung 28A–28C. Wiederum kann der
Schalter 18 Pakete von verschiedenen Rx-Schaltungen 26A–26C zu
einem gegebenen OVC auf einer Paketgrenzenbasis zusammensetzen.
Das Zusammensetzen kann zwischen jeglicher Kombination von Rx-Schaltungen 26A–26C 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 26A–26C und
die Tx-Schaltungen 28A–28C 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 26A–26C und
die Tx-Schaltungen 28A–28C 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) 20A–20C für jedes
der Systeme 10A–10B.
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 90A–90D kann allgemein
in der Lage sein, Pakete zu sourcen, Pakete zu empfangen, oder beides.
Die Paketquellen-/-zieleinrichtungen 90A–90D können jegliche
Kombination von Paketkommunikati onseinrichtungen umfassen. Zum Beispiel
können
verschiedene Paketquellen-/-zieleinrichtungen 90A–90D Rechensysteme
sein, die miteinander über
Pakete kommunizieren können.
Die Paketquellen-/-zieleinrichtungen 90A–90D können verschiedene
Netzwerkeinrichtungen umfassen (z.B. Router, Paketschalter, Gateways,
Firewalls, Konzentratoren, Verteiler (Hubs), etc.). Die Paketquellen-/-zieleinrichtungen 90A–90D 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 10A–10B 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 12A–12N in
den Systemen 10A–10B 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 12A–12N 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 12A–12N 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 90A–90B 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 90A–90D 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 90A–90D ü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 20A–20C für die Übertragung
zu einer Paketquellen-/-zieleinrichtung 90A–90D gemerged
werden.
-
Es
sei angemerkt, dass, obwohl die Paketquellen-/-zieleinrichtungen 90A-90D mit
bidirektionalen Verknüpfungen
zu der gleichen Schnittstellenschaltung 20A–20C 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 20A–20C 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 10A–10B 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 26A–26B, 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 12A–12N 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 12A–12N 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 10A–10B 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 26B–26C 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 28A–28C und
den virtuellen Kanal an diesem Ziel, z.B. die Eingabewarteschlange
für die
PDI 40 oder den OVC für
die Tx-Schaltungen 28A–28C).
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 44B–44C 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 28A–28C 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 28A–28C.
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 12A–12N, die Speichersteuerung 14,
die Verbindung 22, die Paket-DMA-Schaltung 16 (oder
Teile davon), den Schalter 18, die Schnittstellenschaltungen 22A–22C (oder
Teile davon), die Systeme 10A und/oder 10B (oder
Teile davon), die Paketquellen-/-zieleinrichtungen 90A–90D,
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.