-
Gebiet der Erfindung
-
Diese Erfindung bezieht sich im Allgemeinen auf die Netzwerkverarbeitung; insbesondere zielt die Erfindung auf das Bereitstellen einer Verbindung eines Netzwerkprozessor-Paket-Parser mit einem externen Coprozessor ab, um Workload effizient zu senden und Ergebnisse für das Verarbeiten von weiteren Netzwerkfunktionen zu empfangen.
-
Verwandter Stand der Technik
-
Hochleistungs-Netzwerkprozessoren auf einem Chip müssen womöglich ausgereifte Netzwerkfunktionen handhaben können. Insbesondere muss ein Paket-Parser, beispielsweise in einem Ethernet-Adapter, womöglich eine Paketklassifizierung der höheren Schicht und Paketfilterfunktionen unterstützen, die nicht alle am Chip gehandhabt werden können. Unter diesen Umständen muss der Parser einige Paketverarbeitungsfunktionen an einen externen Coprozessor auslagern und erhält im Gegenzug das Ergebnis vom Coprozessor, um dieses als eine Eingabe für sein eigenes Paketverarbeitungsergebnis zu verwenden.
-
Es ist üblich, sich für das Auslagern von Netzwerkverarbeitungsfunktionen vom Paket-Parser zu entscheiden, da unterschiedliche Funktionen eine unterschiedliche Verarbeitungsarchitektur und Leistung erfordern können, wobei der Netzwerkprozessorchip nicht all diese Merkmale beinhalten kann. Der andere gute Grund ist ein Begrenzungsproblem hinsichtlich Chipfläche, da eine Paket-Parsing-Netzwerkzusatzfunktion eine Logik und Arrays erfordern kann, die sehr groß sein können.
-
Eine typische Netzwerkverarbeitungs-Zusatzfunktion, die vom Paket-Parser an den Coprozessor ausgelagert werden kann, ist die Paketklassifizierung, die beispielsweise eine Suche im Rahmen einer Zugriffsmethode für Telekommunikation (TCAM, Telecommunications Access Method) oder eine Suche auf der Grundlage von Hashs, bei der unterschiedliche Suchalgorithmen zur Anwendung kommen (Patricia-Trie, Cuckoo-Algorithmus usw.) beinhaltet. Eine andere Funktion, die ausgelagert werden kann, sind die Paketfilterfunktionen, die auf der Erkennung von aus dem Paket extrahierten Mustern basieren.
-
Eine wesentliche Anforderung für das Entwickeln einer Paket-Parser-Verbindung mit einem externen Coprozessor besteht somit in der Flexibilität, sich an verschiedene Bandbreitenanforderungen anpassen und programmierbare Technologien von externen Prozessoren wie FPGA unterstützen zu können, um viele potenzielle Netzwerkprozessorsystem-Enddesigns zu ermöglichen.
-
Das US-Patent
US7428618 bezieht sich auf eine Netzwerkknotenstruktur, die um zwei Netzprozessoren aufgebaut ist, einen für jede Paket-Datenstrom-Richtung, die über einen gemeinsam genutzten Speicher (
118 in
2) Daten austauschen. Die Struktur beinhaltet darüber hinaus einen Satz von Coprozessoren, die auf einer Tochterkarte (
122C in
2) angeordnet sind. Alle Coprozessoren sind über eine Hardware-Steuerlogik (
236 in
2) miteinander verbunden, die auch eine Schnittstelle für einen der beiden Netzprozessoren (
245A in
2) über einen dedizierten Hauptspeicher (
216 DPSSRAM in
2) bereitstellt. Dieses Dokument aus dem Stand der Technik bietet keine Beschreibung einer konfigurierbaren Schnittstelle mit dem Coprozessor, der Datenaustausch wird stattdessen über eine eindeutige Schnittstelle (
254A in
2) zum Austauschen von Anforderungen und Antworten zwischen den Coprozessoren und dem Netzprozessor über einen dedizierten Hauptspeicher (
216 in
2) erzielt. Die eindeutige Schnittstelle ist zwar dediziert, aber spezifisch für das Unterstützen der Schnittstelle mit dem Coprozessor konzipiert.
-
Das US-Patent
US20030041172 bezieht sich auf eine Netzwerkknotenstruktur, die eine Leistungsverbesserung im Vergleich zu einem bestehenden Netzwerkprozessor ermöglicht. Der zentrale Punkt ist, die bestehende Netzwerkprozessorinfrastruktur mit einem externen Coprozessor zu ergänzen. Die zum jetzigen Zeitpunkt verfügbare Technologie ermöglicht nicht, den Coprozessor auf korrelierte Weise mit dem Hauptnetzwerkprozessor zu betreiben, insbesondere da dafür große Puffer und komplexe Statusabfragealgorithmen erforderlich sind (siehe Ende von [0001]). Ferner werden bei dieser Lösung keine spezifischen Aufgaben parallel mit der Hauptpaketbearbeitung durch den Netzwerkprozessor, sondern in Reihe mit dieser ausgeführt (siehe Ende von [0002]). Diese Lösung beschreibt nicht die physische Schnittstelle mit dem Coprozessor, und insbesondere ist die Schnittstelle nicht als konfigurierbare Schnittstelle beschrieben, die an verschiedene Netzwerksystemanforderungen angepasst werden könnte.
-
Kurzdarstellung der Erfindung
-
Eine bevorzugte Ausführungsform der vorliegenden Erfindung kann ein Verfahren und ein System zum Verbinden eines Paket-Parser in einem Netzwerkprozessorchip mit einem externen Coprozessor für das Senden von Workload und das Empfangen von Ergebnissen auf flexible Weise bereitstellen, so dass bestehende bidirektionale serielle Steuerungs-/Verwaltungs-Lanes wiederverwendet und viele Arten von Datenverkehr und Bandbreite auf einem begrenzten Satz von seriellen Lanes unterstützt werden.
-
In einem ersten Aspekt wird ein Verfahren in einem Netzwerkprozessor für das Verwenden der ersten Übertragungsprotokollanschlüsse bereitgestellt, der erste Übertragungsprotokollanschlüsse aufweist, wobei jeder Datenpfad-Datenverkehr von Paketen mit einer Mindestgröße M auf N Lanes bei einer Geschwindigkeit von S GBit/s unterstützt und Datenverkehr mit unterschiedlichen Übertragungsprotokolleinheiten im Netzwerkprozessor auf N weiteren Lanes bei einer Geschwindigkeit von s GBit/s unterstützt, um Zugriff auf einen externen Coprozessor durch eine Parsing-Netzwerklogik zu unterstützen, die in jedem der ersten Übertragungsprotokollanschlüsse angeordnet ist, die während einer Parsing-Periode bei Empfang eines Pakets mit einer Mindestgröße M eine Anforderung an den externen Coprozessor sendet und eine Antwort vom externen Coprozessor erhält, wobei das Verfahren aufweist, dass der Parser eine Anforderung mit einem Wort von maximal m Byte an den Coprozessor auf den N weiteren Lanes mit einer Geschwindigkeit von s GBit/s sendet und eine Antwort mit einem Wort von maximal m Byte vom externen Coprozessor auf den gleichen weiteren Lanes mit einer Geschwindigkeit von s GBit/s empfängt, so dass die Ungleichung N × S/M =< n × s/m geprüft wird.
-
Vorzugsweise in einem Netzwerkprozessor, der Ethernet-Anschlüsse aufweist, wobei jeder einen Datenpfad-Datenverkehr von Ethernet-Paketen mit einer Mindestgröße von 64 Byte auf 4 Lanes bei einer Geschwindigkeit von 3,125 GBit/s unterstützt und wobei Datenverkehr mit unterschiedlichen Übertragungsprotokolleinheiten im Netzwerkprozessor auf 1 weiteren Lane bei einer Geschwindigkeit von 3,125 GBit/s unterstützt, um das Verwenden der Ethernet-Anschlüsse, für Zugriff auf einen externen Coprozessor durch eine Parsing-Netzwerklogik zu unterstützen, die in jedem der ersten Übertragungsprotokollanschlüsse angeordnet ist, die während einer Parsing-Periode bei Empfang eines Pakets mit einer Mindestgröße von 64 Byte eine Anforderung an den externen Coprozessor sendet und eine Antwort vom externen Coprozessor erhält, wobei das Verfahren aufweist, dass der Parser eine Anforderung mit einem Wort von maximal 16 Byte an den Coprozessor auf der weiteren Lane mit einer Geschwindigkeit von 3,125s GBit/s sendet und eine Antwort mit einen Wort von maximal 16 Byte vom externen Coprozessor auf der gleichen weiteren Lane mit einer Geschwindigkeit von 3,125 GBit/s empfängt.
-
Vorzugsweise weist das Verfahren ferner vor dem Senden von Datenverkehr auf die n weiteren Lanes bei einer Geschwindigkeit von s GBit/s das Multiplexen des Datenverkehrs des Coprozessorzugriffs mit einem Wort mit einer Mindestgröße von M Byte in einem ersten Übertragungsprotokollanschluss und des Datenverkehrs mit einer Übertragungsprotokolleinheit in dem Netzwerkprozessor in einem Zwei-Eingaben-Multiplexer auf, wobei der Zwei-Eingaben-Multiplexer statisch auf einen der zwei gemultiplexten Datenverkehre konfigurierbar ist.
-
Vorzugsweise wird der statisch gemultiplexte Datenverkehr des Coprozessorzugriffs mit einem Wort mit einer Maximalgröße von m Byte vor dem Multiplexen in dem statisch konfigurierbaren Zwei-Eingaben-Multiplexer zunächst in einem dynamischen Zwei-Eingaben-Multiplexer mit einem Datenverkehr des Coprozessorzugriffs mit einem Wort von maximal m Byte von einem anderen ersten Übertragungsprotokollanschluss gemultiplext, wobei der dynamische Multiplexer die beiden gemultiplexten Datenverkehre unter der Steuerung eines Datenverkehr-Arbitrierungsalgorithmus ermöglicht.
-
Vorzugsweise weist das Verfahren ferner auf, dass der Datenverkehr der weiteren Lane beim Übertragen seriell und beim Empfangen parallel in einem Hochgeschwindigkeits-Parallel-Seriell- und Seriell-Parallel-Umsetzer (Hochgeschwindigkeits-SerDes(High Speed SerDes, HSS)) von s GBit/s umgesetzt wird.
-
Vorzugsweise weist das Verfahren ferner auf, dass der Datenverkehr der weiteren bidirektionalen Lane beim Übertragen seriell und beim Empfangen parallel in einem Hochgeschwindigkeits-SerDes von 2 × s GBit/s umgesetzt wird.
-
Vorzugsweise weist das Verfahren ferner auf, dass der Datenverkehr, der von unterschiedlichen Übertragungsprotokolleinheiten unterstützt wird, einen 2,5-GBit/s-PCIe-x1-Datenverkehr aufweist.
-
Vorzugsweise weist der Datenverkehr, der von unterschiedlichen Übertragungsprotokolleinheiten unterstützt wird, eine 1,25-GBit/s-SGMII-Datenverkehr auf.
-
Vorzugsweise ist der Datenverkehr-Arbitrierungsalgorithmus ein „Work-Conserving”-Umlaufalgorithmus.
-
Vorzugsweise beinhalten die Wörter der Anforderung mit einer Maximalgröße von m Byte und die Wörter der Antwort mit einer Maximalgröße von m Byte für den Zugriff auf den externen Coprozessor eine Kennung des ersten Übertragungsprotokollanschlusses, der den Datenverkehr des entsprechenden Coprozessorzugriffs mit einem Wort mit einer Maximalgröße von m Byte unterstützt.
-
In einem zweiten Aspekt wird ein Netzwerkprozessor bereitgestellt, der erste Übertragungsprotokollanschlüsse aufweist, wobei jeder einen Datenpfad-Datenverkehr mit einer Maximalgröße von M Byte auf N Lanes bei einer Geschwindigkeit von S GBit/s unterstützt und Datenverkehr mit unterschiedlichen Übertragungsprotokolleinheiten im Netzwerkprozessor auf n weiteren Lanes mit einer Geschwindigkeit von s GBit/s unterstützt, wobei der Netzwerkprozessor Zugriff auf einen externen Coprozessor durch eine Parsing-Netzwerklogik unterstützt, die in jedem der ersten Übertragungsprotokollanschlüsse angeordnet ist, wobei die Parsing-Logik so ausgelegt ist, dass sie während einer Parsing-Periode bei Empfang eines Pakets mit einer Mindestgröße von M Byte eine Anforderung an den externen Coprozessor sendet und eine Antwort vom externen Coprozessor empfängt, wobei der Netzwerkprozessor aufweist, dass der Parser so ausgelegt ist, dass er eine Anforderung mit einem Wort von maximal m Byte an den Coprozessor auf den n weiteren Lanes sendet und eine Antwort mit einem Wort mit einer Maximalgröße von m Byte vom externen Coprozessor auf den gleichen n weiteren Lanes in einer Geschwindigkeit s empfängt, so dass die Ungleichung N × S/M =< n × s/m geprüft wird.
-
Vorzugsweise weist der Netzwerkprozessor ferner Ethernet-Anschlüsse auf, wobei jeder Datenpfad-Datenverkehr mit einer Mindestgröße von 64 Byte auf 4 Lanes bei einer Geschwindigkeit von 3,125 GBit/s unterstützt und Datenverkehr mit unterschiedlichen Übertragungsprotokolleinheiten im Netzwerkprozessor auf 1 weiteren Lane mit einer Geschwindigkeit von 3,125 GBit/s unterstützt, wobei der Netzwerkprozessor Zugriff auf einen externen Coprozessor durch eine Parsing-Netzwerklogik unterstützt, die in jedem der Ethernet-Protokollanschlüsse angeordnet ist, wobei die Parsing-Logik so ausgelegt ist, dass sie während einer Parsing-Periode bei Empfang eines Pakets mit einer Mindestgröße von M Byte eine Anforderung an den externen Coprozessor sendet und eine Antwort vom externen Coprozessor erhält, wobei der Netzwerkprozessor aufweist, dass der Parser so ausgelegt ist, dass er eine Anforderung mit einem Wort von maximal 16 Byte auf der 1 weiteren Lane an den Coprozessor sendet und eine Antwort mit einem Wort mit einer Maximalgröße von 16 Byte auf der gleichen weiteren Lane in einer Geschwindigkeit von 3,125 vom externen Coprozessor empfängt, so dass die Ungleichung N × S/M =< n × s/m geprüft wird.
-
Vorzugsweise weist der Netzwerkprozessor ferner einen Zwei-Eingaben-Multiplexer auf, der Datenverkehr des Coprozessorzugriffs mit einem Wort mit einer Maximalgröße von m Byte im ersten Übertragungsprotokollanschluss mit einem Datenverkehr mit einer Netzwerkprotokolleinheit im Netzwerkprozessor multiplext, wobei der Zwei-Eingaben-Multiplexer statisch auf einen der zwei gemultiplexten Datenverkehre konfigurierbar ist.
-
Vorzugsweise weist der Netzwerkprozessor ferner einen dynamischen Zwei-Eingaben-Multiplexer auf, der einen Datenverkehr des Coprozessorzugriffs mit einem Wort mit einer Maximalgröße von m Byte von einem ersten Übertragungsprotokollanschluss und einen Datenverkehr des Coprozessorzugriffs mit einem Wort mit einer Maximalgröße von m Byte von einem anderen ersten Übertragungsprotokollanschluss multiplext, bevor der gemultiplexte Datenverkehr in dem statisch konfigurierbaren Zwei Eingaben-Multiplexer statisch gemultiplext wird, wobei der dynamische Multiplexer so ausgelegt ist, dass er die zwei gemultiplexten Datenverkehre unter der Steuerung eines Datenverkehr-Arbitrierungsalgorithmus ermöglicht.
-
Die physische Ethernet-Schnittstelle des Netzwerkprozessors unterstützt vorzugsweise den Ethernet-Datenverkehr und den Datenverkehr (für Steuerung und Daten) von anderen Übertragungsprotokolleinheiten auf weiteren Lanes: Mit der Lösung der Erfindung wird der Parser-Befehlsfluss mit dem externen Coprozessor auch auf den weiteren Lanes unterstützt. Dadurch kann die Anzahl von seriellen Lanes am Netzwerkprozessor minimiert werden und in der Folge werden die Paketgröße und Kosten optimiert und die von den großen Hochgeschwindigkeits-SerDes-Kernen belegte Siliciumfläche minimiert (angepasste Logik). Aus all diesen Gründen scheint es sehr vorteilhaft zu sein, wenn die Schnittstelle des externen Coprozessors diese weiteren bidirektionalen seriellen Lanes gemeinsam nutzt.
-
Bezugnahme auf die Zeichnungen
-
Es wird nun eine bevorzugte Ausführungsform der vorliegenden Erfindung lediglich beispielhaft unter Bezugnahme auf die beiliegenden Zeichnungen beschrieben, in denen:
-
1 eine globale Ansicht eines Netzwerkprozessors mit dessen Hauptfunktionen, Ausgabe-Lanes und Verbindung mit einem externen Coprozessor ist, in der die bevorzugte Ausführungsform der Erfindung umgesetzt ist;
-
2 eine erste Umsetzung einer Verbindung des Netzwerkprozessor-Parser mit dem externen Coprozessor zeigt, in der die Lösung der bevorzugten Ausführungsform nicht umgesetzt ist;
-
3 eine erste Optimierung der Verbindung des Netzwerkprozessor-Parser mit dem externen Coprozessor zeigt, in der die Lösung der bevorzugten Ausführungsform nicht umgesetzt ist;
-
4 eine zweite Optimierung der Verbindung des Netzwerkprozessor-Parser mit dem externen Coprozessor gemäß der Lösung der bevorzugten Ausführungsform zeigt;
-
5 ein XCP-Anforderungs- und XCP-Antwort-Format, das zwischen dem Netzwerkprozessor-Parser und dem externen Coprozessor ausgetauscht wird, gemäß der Lösung der bevorzugten Ausführungsform zeigt.
-
Ausführliche Beschreibung der bevorzugten Ausführungsform
-
1 ist eine globale Ansicht eines Netzwerkprozessors mit dessen Hauptfunktionen, Ausgabe-Lanes und Verbindung mit einem externen Coprozessor, in der die bevorzugte Ausführungsform der Erfindung umgesetzt ist. Von oben nach unten beschrieben, setzt der 40-GBit/s-Netzwerkprozessor (100) von 1, der Daten mit einem Computer (hier nicht gezeigt) austauscht, Verarbeitungsfunktionen mit speziellen Prozessoren (101 bis 107) um, die mit einem internen Prozessorbus (108) verbunden sind. Die beiden Hauptnetzwerkprotokolle werden von diesem Netzwerkprozessor durch eine PCI-Einheit (120), die mit dem internen Bus verbunden ist und externe Verbindungen, z. B. mit einem USB-Anschluss, unterstützt, und durch einen Ethernet-Adapter (130) unterstützt, der IEEE-standardisierte 4-×-10-GBit/s-XAUI-Schnittstellen (Anschluss 1, Anschluss 2, Anschluss 3 und Anschluss 4) unterstützt, was den Ethernet-Paket-Datenpfad darstellt. Der PCI- und der Ethernet-Datenverkehr werden über eine Verbindungsschnittstelle mit den 4 Ethernet-Anschlüssen (Anschluss 1, Anschluss 2, Anschluss 3 und Anschluss 4) zusammengeführt. Der PCI- und der Ethernet-Datenverkehr werden danach in einem Hochgeschwindigkeits-SerDes (160) seriell umgesetzt (Top-down-Datenverkehr), wobei der entstehende Hochgeschwindigkeits-Datenpfad (170) 4 seriell umgesetzte Ausgabe-Lanes von 4 × 10 Bit × 2 zum Übertragen und Empfangen beinhaltet, da er bidirektional ist.
-
Ein weiterer Pfad (190), der seinen Ursprung in der PCI-Einheit (120) und dem Ethernet-Adapter (130) hat, der eine geringere Geschwindigkeit als der Datenpfad aufweist, kann beispielsweise 2 × 1-GBit/s-Ethernet-Datenpfad und zwei 2,5-GBit/s-PCI-Express-(1-Lane-PCIe-x1)-Datenpfade beinhalten, wie durch die vier Ausgabepfade (190) gezeigt. Dieser weitere Pfad (190) wird durch einen zweiten Hochgeschwindigkeits-SerDes (161) seriell umgesetzt.
-
Im Netzwerkprozessor sendet die Parser-Logik (140), die eine Ethernet-Paketklassifizierung im Ethernet-Adapter ausführt, einige weitere Parser-Netzwerkfunktionen, die von einem externen Coprozessor (110) durchzuführen sind. Der Coprozessor wird in Bezug auf den Netzwerkprozessor (100), der in einem Chip umgesetzt ist, als ”extern” eingestuft. Es wird angemerkt, dass 4 Eingaben auf dem Coprozessor dargestellt sind, die Anzahl von Eingaben auf einem externen Coprozessor jedoch variabel ist. Im Top-down-Parser-Pfad assembliert der Parser Anforderungsnachrichten im Rahmen seines Parser-Prozesses in seine Eingaberegister. Die Assemblierung ist vollständig, wenn der Parser das „Befehlsbyte” (das später im Dokument unter Bezugnahme auf die Beschreibung von 5 beschrieben ist) der Nachricht füllt. Mit dem Befehlsbyte leitet der Parser im Nachrichtenfluss (150), der in der Zeichnung logisch durch einen dicken Pfeil dargestellt ist, eine Verschlüsselung, serielle Umsetzung und Übertragung der „Anforderungs”-Nachricht an den Coprozessor (110) ein. In seinem Bottom-up-Pfad setzt der Parser die vom Coprozessor empfangene „Antwort”-Nachricht parallel um und entschlüsselt sie und führt dieses Ergebnis mit dem Ergebnis seines eigenen Paketprozesses zusammen.
-
Die sogenannte bidirektionale XCP-Parser-Coprozessor-Schnittstelle ist keine Standardschnittstelle, sondern ist als Teil der Lösung der Erfindung definiert.
-
2 zeigt eine erste Umsetzung einer Verbindung des Netzwerkprozessor-Parser mit dem externen Coprozessor, in der die Lösung der bevorzugten Ausführungsform nicht umgesetzt ist. 2 zeigt die Anschlusslogiken des Netzwerkprozessors. Die Verwendung von „Anschlüssen” im restlichen Dokument bezieht sich auf Logikeinheiten. In 2 hat ein 40-GBit/s-Netzwerkprozessor (100) 4 Ethernet-Anschlüsse (200, 201, 202, 203) zu 10 GBit/s, wobei jeder eine bidirektionale XAUI-Schnittstelle bereitstellt, die durch den IEEE-Standard definiert ist und 4 Lanes zu 3,125 GBit/s aufweist, wobei jede 10 Bit in Sende- und Empfangsrichtung beinhaltet. Diese XAUI-Schnittstelle unterstützt den Datenpfad (220, 221, 222, 223), den Ethernet-Paket-Datenverkehr. Dieser Datenverkehr wird in einem Hochgeschwindigkeits-SerDes (160) seriell umgesetzt, der hier nicht dargestellt ist.
-
Die empfangenen Pakete werden im Ethernet-Anschluss (z. B. unter Verwendung eines Picoprozessors auf FSM-Grundlage) geparst (230, 231, 232, 233), wobei das Parsen von Paketen, die eine zusätzliche Verarbeitung erfordern, vom externen Coprozessor durchzuführen ist, wobei die Anforderung über eine XCP-Schnittstelle gesendet und die Antwort über eine solche erhalten wird. Der Parser kann eine XCP-Anforderung zu einem beliebigen Zeitpunkt seines Paket-Parsing-Fensters erstellen und sie unter Verwendung einer seriellen 3,125-Lane für jeden Ethernet-Anschluss senden. Geht man davon aus, dass typische XCP-Anforderungen höchstens 16 Byte lang sind, was einem Viertel der Ethernet-Packet-Mindestgröße (16 Bytes) entspricht, und auf 4 Lanes der (IEEE-Standard-Ethernet-)XAUI-Schnittstelle bei einer Geschwindigkeit von 3,125 GBit/s gesendet werden, ist eine weitere 3,125-GBit/s-Lane für die XCP-Schnittstelle (212) angemessen.
-
Das serielle/parallele Umsetzen wird in einem Hochgeschwindigkeits-SerDes (161) durchgeführt, bevor der Coprozessor (110) erreicht wird.
-
Bei dieser ersten Umsetzung wird die XCP-Schnittstelle mit dem Ethernet-Datenverkehr auf den 10-GBit/s-Ethernet-Anschlüssen des Netzwerkprozessors gemeinsam genutzt.
-
Ein weiteres Beispiel könnte bzw. könnten ein Fibre Channel oder andere Übertragungsprotokollanschlüsse sein, auf dem bzw. denen die Anzahl von seriellen Lanes optimiert werden muss bzw. müssen. Angenommen, der andere Übertragungsprotokollanschluss stellt N serielle Lanes bei S GBit/s bereit, um einen Fluss von Paketen mit einer Mindestgröße von M Byte zu unterstützen, und n weitere serielle Lanes mit einer Geschwindigkeit s, die Anforderung/Antwort-Wörter mit maximal m Byte unterstützen. Die folgende allgemeine Ungleichung muss geprüft werden: N × S/M =< n × s/m
-
Tatsächlich muss die definierte Variable mit den folgenden gleichen p- und P-Paketperiodizitäten übereinstimmen (p = P):
Auf den XAUI-Lanes: P = (M × 10)/(N × S) Auf den n weiteren Lanes p = (m × 10)/n × s
-
P und p sind in Nanosekunden ausgedrückt, M und N in Bytes, 10 steht für die Anzahl von Bits, N und n bezeichnen die Anzahl von Lanes und S und s sind in GBit/s ausgedrückt.
-
3 zeigt eine erste Optimierung der Verbindung des Netzwerkprozessor-Parser mit dem externen Coprozessor, in der die Lösung der bevorzugten Ausführungsform nicht umgesetzt ist. Ein typischer 40-GB-Netzwerkprozessor setzt 4 XAUI-Schnittstellen plus ein paar zusätzliche serielle Lanes für Steuerungs- und Verwaltungszwecke um, z. B. zwei (standardisierte) 1,25-GBit/s-SGMII-Ethernet-Lanes für die Netzwerkverwaltung und zwei 2,5-GBit/s-PCIe-x1-Lanes für die Steuerung von Peripheriegeräten (beispielsweise Datenverkehr zu einem Computer-USB-Anschluss).
-
Da es äußerst wünschenswert ist, die Anzahl von seriellen Lanes am Netzwerkprozessor zu minimieren, ist die gemeinsame Nutzung einer ersten Lane umgesetzt, wie in 3 gezeigt. Jede der 4 Steuerungs-/Verwaltungs-Lanes kann unabhängig für ihre ursprüngliche funktionelle Verwendung (SGMII von Ethernet-Adapter 130 oder PCIe x1 von der PCI-Einheit (120) im Netzwerkprozessor) oder für eine Schnittstelle mit dem externen Coprozessor konfiguriert werden. Wenn eine weitere Lane für die XCP-Schnittstelle mit dem externen Coprozessor konfiguriert ist, ermöglicht die Lane dem mit einem der vier 10-GB-Anschlüsse verbundenen Parser eine Erweiterung dessen Funktionalität durch Anfordern eines weiteren Prozesses beim externen Coprozessor.
-
Diese gemeinsame Nutzung der Lane ist unter Verwendung von statischen Multiplexern umgesetzt, die in 3 dargestellt sind, wobei ein Beispiel mit zwei XCP-Datenverkehren gezeigt ist, die auf Anschluss 3 und Anschluss 4 gemeinsam genutzt werden. Ein erster statischer Multiplexer (340) nutzt die Lane gemeinsam zwischen dem Parser-XCP- und PCIe-x1-Datenverkehr, und ein zweiter Multiplexer (341) nutzt die Lane gemeinsam zwischen dem Parser-XCP-Datenverkehr und dem SGMII-Datenverkehr für die Netzwerkverwaltung. Der erste Multiplexer (340) hat zwei Eingaben: den XCP-Datenverkehr vom Parser und den SGMII-Datenverkehr vom Ethernet-Adapter. Bei der Ausgabe stellt der Multiplexer gemäß seiner Konfiguration entweder den Parser-Datenverkehr oder den Ethernet-Steuerungsdatenverkehr bereit. Tatsächlich sind diese Multiplexer vorzugsweise statische Multiplexer, die bei Systeminitialisierung des Netzwerkprozessors entweder für einen Eingabedatenverkehr oder für den anderen Eingabedatenverkehr konfiguriert werden können. Im Beispiel von 3 sind die XCP-Lanes von Anschluss 1 und Anschluss 2 dem Parser-Datenverkehr zugeordnet, Anschluss 3 und Anschluss 4 können jedoch so konfiguriert werden, dass sie XCP-Datenverkehr oder PCI- bzw. Ethernet-Datenverkehr unterstützen.
-
Um die Zeichnung zu vereinfachen, sind nur zwei Steuerungs-Lanes dargestellt, aber in der Praxis hat jeder Ethernet-Anschluss einen gemultiplexten Datenverkehr, wie für Anschluss 3 und Anschluss 4 gezeigt, da zwei 1,25-GBit/S-SGMII-Ethernet-Lanes für die Netzwerkverwaltung und zwei 2,5-GBit/s-PCIe-1x-Lanes für die Steuerung von Peripheriegeräten unterstützt werden müssen.
-
4 zeigt eine zweite Optimierung der Verbindung des Netzwerkprozessor-Parser mit dem externen Coprozessor gemäß der Lösung der bevorzugten Ausführungsform. Gemäß der bevorzugten Ausführungsform kann eine Steuerungs-/Verwaltungs-Lane, die für den Zugriff auf den externen Coprozessor konfiguriert ist, ferner zweien anstatt einem Parser zugehörig sein, wenn die Lösung der gemeinsamen Nutzung der Steuerungs-/Verwaltungs-Lanes zwischen Zugriff auf den externen Coprozessor und PCI- oder Ethernet-Datenverkehr angewandt wird.
-
Der Netzwerkprozessor von 4 setzt die erste Optimierung um, wie in 3 beschrieben. Ein statischer Multiplexer (400, 401, 402, 403) ist jedem Ethernet-Anschluss zugehörig, so dass jede Steuerungs-/Verwaltungs-Lane für die beiden den Parser-Datenverkehr und den PCI- oder Ethernet-Datenverkehr konfiguriert sein kann. Es sei angemerkt, dass der Einfachheit wegen die Verbindung mit der PCI-Einheit und dem Ethernet-Adapter nur in Anschluss 2 und Anschluss 3 dargestellt sind, diese Verbindung jedoch für die 4 Anschlüsse bestehen kann. Bei der bevorzugten Ausführungsform ist ein zweiter Multiplexer (410, 411, 412, 413) in jedem Ethernet-Anschluss hinzugefügt, der Datenverkehr von zwei Coprozessorzugriffen auf einer gleichen Lane multiplext. Wenn einer der statischen Multiplexer (400, 401, 402, 403) so konfiguriert ist, dass er nur den Zugriff auf den externen Coprozessor (XCP-Schnittstelle) zulässt, empfängt er den Datenverkehr durch den Zugriff auf den externen Coprozessor vom Parser für die beiden Anschlüsse, mit denen er verbunden ist. Beispielsweise empfängt der statische Multiplexer (401) von Anschluss 2, wenn er so konfiguriert ist, dass er Coprozessorzugriff-Datenverkehr vom Parser von Anschluss 2 (231, 211) zulässt, auch Coprozessorzugriff-Datenverkehr vom Parser von Anschluss 1 (230, 210). Die beiden Coprozessorzugriff-Datenverkehre von Anschluss 1 und Anschluss 2 werden im zweiten Multiplexer 411 gemultiplext. Die zweiten Multiplexer (410, 411, 412, 413) sind dynamisch, d. h. sie werden nicht bei Systeminitialisierung des Netzwerkprozessors konfiguriert, sondern beide Datenverkehre werden angenommen, wenn der Netzwerkprozessor aktiv ist. Der Datenverkehr wird in den dynamischen Multiplexern durch einen Arbiter (420, 421, 422, 423) verwaltet, der vorzugsweise einen „Work-Conserving”-Umlaufalgorithmus umsetzt. Ein „Work-Conserving”-Arbiteralgorithmus ist wie in der Technik bekannt, ein Algorithmus, der alternierenden Datenverkehr zulässt, wenn die beiden Parser-Datenverkehre zunehmen.
-
Wenn ein statischer Multiplexer (400, 401, 402, 403) so konfiguriert ist, dass er nur PCI- oder Ethernet-Datenverkehr annimmt, wird der dynamische Multiplexer (410, 411, 412, 413) nichtverwendet.
-
Folglich sind die Coprozessorzugriffe des Parser von zwei Anschlüssen gemäß der Lösung der bevorzugten Ausführungsform mit einem gleichen Multiplexer verbunden, so dass nur eine weitere Lane verwendet wird, um den Datenverkehr des Coprozessorzugriffs von zwei Ethernet-Anschluss-Parsern zu unterstützen.
-
Dies ermöglicht 2 weitere Lanes für deren ursprüngliche Funktion (PCIe x1, SGMII-Ethernet) aufzusparen und dennoch Zugriff durch den externen Coprozessor auf die 4 Parser der 4 Ethernet-10-GB-Anschlüsse bereitzustellen.
-
Dadurch ist die Lösung flexibel genug, um viele verschiedene Konfigurationen zu ermöglichen. Wenn der Netzwerkprozessor 8 Ethernet-Anschluss-Logiken bereitstellt, können 4 Eingaben im Coprozessor durch die Parser-Schnittstelle mit dem Coprozessor verwendet werden.
-
Das Multiplexen von zwei Parser-Coprozessorzugriff-Datenverkehren basiert auf Anforderungen (XCP-Wörter mit max. 16 Byte werden vom Parser an den Coprozessor gesendet) und Antworten (XCP-Wörter mit max. 16 Byte werden durch den Parser vom Coprozessor empfangen). Die Anforderungen von den 2 Parsern werden mittels Umlauf arbitriert, und die Antworten müssen den Anschluss identifizieren, an den der Datenverkehr für die empfangende weitere Lane gesendet werden sollte.
-
5 zeigt ein XCP-Anforderungs- und XCP-Antwort-Format, das zwischen dem Netzwerkprozessor-Parser und dem externen Coprozessor ausgetauscht wird, gemäß der Lösung der bevorzugten Ausführungsform. In 5 ist ein variables Anforderungs- und Antwortformat der XCP-Schnittstelle mit einer maximalen Größe von 16 Byte beschrieben, das vom Parser verwendet wird, um mit dem externen Coprozessor Daten auszutauschen. Das Anforderungsformat weist ein erstes Befehlsbyte (500) auf, wobei die letzten 15 Bytes für Daten (501) verwendet werden. Das Befehlsbyte ist dargestellt und kann beispielsweise ein Befehlstypbit, Bit 5, beinhalten, das 0 für einen Lesebefehl und 1 für einen Schreibbefehl sein kann, und ein „Letzer Befehl”-Bit, Bit 3, das dem Coprozessor anzeigt, dass der Befehl der letzte ist oder dass der Coprozessor auf einen nächsten Befehl warten muss. Ein Anschluss-ID-Bit (503), das beispielsweise in Bit 4 des Befehlsbyte der Anforderung zu finden ist, definiert den Ursprung des Befehls, da zwei Parser-Befehlsdatenverkehre gemultiplext werden können. Das gleiche Bit 4 wird mit dem gleichen Anschluss-ID-Bit-Wert (506) im Befehlsbyte (504) der 16-Byte-Formatantwort des Coprozessors verwendet, wobei die restlichen 15 Bytes (505) für Daten verwendet werden. Mit dem Anschluss-ID-Bit sind zwei mögliche Werte ausreichend, um einen der beiden Anschlüsse für den gemultiplexten Parser-Datenverkehr zu benennen und somit wird eine korrekte Lenkung der Antwort zum entsprechenden Parser möglich.
-
Es wird angemerkt, dass die Ausgabe der Steuerungs-/Verwaltungs-Lane, auf der der Ethernet-Anschluss mit dem statischen Multiplexer so konfiguriert ist, dass der Coprozessorzugriff-Datenverkehr unterstützt wird, wenn zwei Coprozessorzugriff-Datenverkehrsverbindungen dynamisch auf der gleichen Lane gemultiplext werden, die Datenverkehr-Gesamtrate von 2 × 3,125 GBit/s beträgt, d. h. 6,25 GBit/s. In diesem Fall kann ein in der Technik bekannter Hochgeschwindigkeits-SerDes (161) von 6,25 GBit/s verwendet werden und ist angemessen.
-
Wenn das dynamische Multiplexing der bevorzugten Ausführungsform nicht verwendet wird, beträgt der Coprozessorzugriff-Datenverkehr auf einem Ethernet-Anschluss 3,125 GBit/s und dies ist die Maximalrate für den Eintritt in den HSS (161), da sich die Ethernet-Datenverkehrsrate für Steuerung/Verwaltung auf 1,25 GBit/s beläuft und der PCIe-x1-Datenverkehr, der 2,5 GBit/s ist, den HSS (161) ebenfalls kreuzt. Aus diesem Grund kann ein HSS mit einer geringeren Leistung (3,125 GBit/s) im Rahmen der ersten oder der zweiten Umsetzung verwendet werden.
-
Die Flexibilität der Schnittstelle mit dem externen Coprozessor wird auch durch mehrere Geschwindigkeitsoptionen auf den seriellen Lanes erzielt, so dass geringere Geschwindigkeiten verwendet werden können, wenn kostenoptimierte Umsetzungen von externen Coprozessoren serielle Links mit keiner sehr hohen Geschwindigkeit nutzen (z. B. manche Low-End-FPGA-Familien), wobei höhere Geschwindigkeiten im Rahmen der Lane-Multiplexing-Schemata verwendet werden können.
-
Es wird angemerkt, dass die Ausführungsformen der Erfindung, wie oben beschrieben, auf jedweden Typ eines externen Coprozessors, z. B. einen Prozessor, eine ASIC oder einen FPGA-Coprozessor, Anwendung finden können.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- US 7428618 [0006]
- US 20030041172 [0007]