DE112013001211B4 - Multithread-Paketverarbeitung - Google Patents

Multithread-Paketverarbeitung Download PDF

Info

Publication number
DE112013001211B4
DE112013001211B4 DE112013001211.1T DE112013001211T DE112013001211B4 DE 112013001211 B4 DE112013001211 B4 DE 112013001211B4 DE 112013001211 T DE112013001211 T DE 112013001211T DE 112013001211 B4 DE112013001211 B4 DE 112013001211B4
Authority
DE
Germany
Prior art keywords
data packet
engine
processing
swap
swap engine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE112013001211.1T
Other languages
English (en)
Other versions
DE112013001211T5 (de
Inventor
c/o IBM Corporation Fuhs Ronald Edward
c/o IBM Corporation Willenborg Scott Michael
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112013001211T5 publication Critical patent/DE112013001211T5/de
Application granted granted Critical
Publication of DE112013001211B4 publication Critical patent/DE112013001211B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Retry When Errors Occur (AREA)

Abstract

Verfahren zur gleichzeitigen Verarbeitung von reihenfolgesensitiven Datenpaketen, wobei das Verfahren die Schritte aufweist:Empfangen einer Vielzahl von in Folge angeordneten Datenpaketen in einer Netzwerkschnittstelleneinheit;durch die Netzwerkschnittstelleneinheit Leiten eines ersten Datenpakets von der Vielzahl der in Folge angeordneten Datenpakete an eine erste Auslagerungsengine;durch die Netzwerkschnittstelleneinheit Leiten eines zweiten Datenpakets von der Vielzahl der in Folge angeordneten Datenpakete an eine zweite Auslagerungsengine, wobei das zweite Datenpaket sequenziell auf das erste Datenpaket folgt;Empfangen von Informationen von der ersten Auslagerungsengine durch die zweite Auslagerungsengine, wobei die Informationen zeigen, dass die erste Auslagerungsengine das erste Datenpaket gerade verarbeitet; undauf der Grundlage der an der zweiten Auslagerungsengine empfangenen Informationen Verarbeiten des zweiten Datenpakets durch die zweite Auslagerungsengine, so dass kritische Ereignisse bei der Verarbeitung des ersten Datenpakets durch die erste Auslagerungsengine vor kritischen Ereignissen bei der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine auftreten,wobei der Schritt der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine, so dass kritische Ereignisse bei der Verarbeitung des ersten Datenpakets durch die erste Auslagerungsengine vor kritischen Ereignissen bei der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine auftreten, einen oder mehrere der folgenden Schritte aufweist:Beginnen der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine im Anschluss an den Empfang einer Benachrichtigung von der ersten Auslagerungsengine, dass eine Gültigkeitsprüfung an dem ersten Datenpaket durchgeführt wurde;Fortsetzen der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine nach einem Prüfpunkt in der Verarbeitung im Anschluss an den Empfang einer Benachrichtigung von der ersten Auslagerungsengine, dass die erste Auslagerungsengine einen entsprechenden Prüfpunkt in der Verarbeitung des ersten Datenpakets durchlaufen hat; undSchreiben des zweiten Datenpakets in den Hauptspeicher durch die zweite Auslagerungsengine im Anschluss an eine Benachrichtigung, dass die erste Auslagerungsengine das erste Datenpaket in den Hauptspeicher geschrieben hat.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft allgemein die Computervernetzung und insbesondere die Multithread-Verarbeitung von empfangenen Paketen, wobei mehrere Paketverarbeitungsengines verwendet werden.
  • HINTERGRUND DER ERFINDUNG
  • Der Hochleistungsnetzbetrieb sieht sich ständig einer Herausforderung gegenüber: Lokale Netzwerktechnologien erreichen in kürzerer Zeit höhere Geschwindigkeiten als Prozessoren und Hauptspeicher. Jedes Mal, wenn die Ethernet-Technologie einen weiteren Geschwindigkeitssprung macht, müssen Netzwerkentwickler Wege finden, um dem restlichen System zu ermöglichen, Schritt zu halten - selbst auf schneller moderner Hardware.
  • Netzwerkeinheiten verwenden üblicherweise einen Pufferspeicher, d.h. einen Bereich des Hauptspeichers, der Daten vorübergehend in der Netzwerkeinheit speichert, um einen Engpass an einem eingehenden (oder abgehenden) Port an einem Konzentrator, Multiplexer, einer Vermittlungsstelle (Switch), einem Router usw. auszugleichen. Wenn beispielsweise das Volumen des ankommenden Verkehrs die Ressourcen eines Switch übersteigt, kann ein Pufferspeicher an dem eingehenden Port des Switch den Verkehrsüberhang vorübergehend speichern, bis der Switch wieder über ausreichend Ressourcen verfügt, um den Verkehr zu verarbeiten. Ein Pufferspeicher kann auch zur vorübergehenden Speicherung von Paketdaten dienen, um eine Neuübertragung in dem Fall zu ermöglichen, in dem eine nachgeordnete Einheit das Paket nicht innerhalb eines annehmbaren Zeitraums fehlerfrei empfängt.
  • Netzwerkschnittstellen-Hardware eines empfangenden Computersystems empfängt Pakete üblicherweise in einem Pufferspeicher, bevor der Inhalt des Pakets in den Systemspeicher geschrieben wird. Wenn der Verarbeitungsaufwand beträchtlich wird, können Pakete in dem Pufferspeicher an eine oder mehrere Auslagerungsengines gesendet werden, um sie zu verarbeiten und in den Hauptspeicher zu schreiben, um das Risiko eines Pufferüberlaufs zu verringern. Die eine Auslagerungsengine oder die mehreren Auslagerungsengines bieten häufig Funktionen wie zum Beispiel die syntaktische Analyse (Parsing) von Paket-Kopfbereichen, die Berechnung von Prüfsummen, die Trennung von Kopfbereichen und die Scatter-Gather-Speicherung der Pakete.
  • Mehrere Auslagerungsengines können eingesetzt werden, um Pakete von verschiedenen logisc2hen Ports, Threads oder anderen Verbindungen gleichzeitig handzuhaben. In einem solchen System kann die Paketverarbeitung als „Multithread-Verarbeitung“ bezeichnet werden.
  • Die US 2003/0235194 A1 betrifft einen Netzwerkprozessor mit mehreren Verarbeitungsengines, die für verschiedene Arten von Eingangspaketen konfigurierbar sind. Die Verarbeitungsengines können in verschiedene Gruppen eingeteilt werden, wobei jede Gruppe für die Verarbeitung einer Art von Eingangspaketen zuständig ist. Der Netzwerkprozessor beinhaltet eine Paketzuordnungslogik, die den Pakettyp eines empfangenen Pakets ermittelt und das empfangene Paket einer der Verarbeitungsmaschinen innerhalb der entsprechenden Gruppe zuordnet. In einer Ausführungsform sind die Verarbeitungsengines strukturell ähnlich, aber sie können so programmiert werden, dass sie verschiedene Arten von Paketen per Mikrocode verarbeiten. Pakete des gleichen Typs werden von der entsprechenden Verarbeitungsengine oder Gruppe von Verwertungsengines parallel verarbeitet.
  • Die US 5664200 A betrifft ein Multiprozessor-Computersystem, welches eine Mehrzahl von Prozessoren, jeder in der Lage, Interrupt-Anforderungen an jeden anderen der Prozessoren zu erzeugen, und einen Systembus aufweist, mit welchem die Mehrzahl von Prozessoren verbunden ist zum Übermitteln von Interrupt-Anforderungen zwischen den Prozessoren; wobei ein erster Prozessor eine Interrupt-Anforderung an einen zweiten Prozessor erzeugt und wobei der zweite Prozessor in Antwort auf eine Interrupt-Anforderung von dem ersten Prozessor eine Bestätigungsantwort (ACK) auf dem Systembus erzeugt, wenn der zweite Prozessor die Interrupt-Anforderung akzeptiert und eine Nicht-Bestätigungsantwort (NAK) auf dem Systembus erzeugt, wenn der zweite Prozessor die Interrupt-Bestätigung verweigert, und auf Erledigung des Bedienens der Interrupt-Anforderung durch den zweiten Prozessor einen Interrupt-Erledigt-Befehl auf den Systembus setzt, wobei jede Interrupt- Anforderung eine erste Kanalnummer, welche den ersten Prozessor als die Quelle der Anforderung bezeichnet, eine zweite Kanalnummer, welche den zweiten Prozessor als das Ziel der Anforderung bezeichnet, und einen Niveau-Code, welcher das Niveau der Interrupt-Anforderung bezeichnet, aufweist, dass der erste Prozessor zum Zweck der Interrupt-Wiederholung aufweist: eine Verweigert-Interrupt-Registereinrichtung, welche auf eine Nicht-Bestätigungs-Antwort (NAK) von dem zweiten Prozessor antwortet, welcher eine Interrupt-Anforderung verweigert, wann immer er eine vorherige und anhängige Anforderung höheren Niveaus enthält; und eine Niveau-Überwachungslogikeinrichtung, verbunden mit dem Systembus zum Detektieren des Auftretens eines Interrupts-Beendet-Befehls auf dem Systembus, Vergleichen der Adresse in dem Interrupt-Beendet-Befehl mit einem zweiten Prozessor-Bezeichnungs-Code, der in der Verweigert-Interrupt-Registereinrichtung gespeichert ist und Erzeugen einer Wiederholungs-Interrupt-Ausgabe an den ersten Prozessor, wenn die Adresse in dem Interrupt-Beendet-Befehl dem zweiten Prozessor-Bezeichnungs-Code entspricht, der in der Verweigert-Interrupt-Registereinrichtung gespeichert ist; und wobei der erste Prozessor auf die Interrupt-Wiederholungs-Ausgabe von der Niveau-Überwachungslogikeinrichtung antwortet zum Wiederstarten der entsprechenden zuvor verweigerten Interrupt-Anforderung.
  • Die US 7751401 B2 betrifft ein Verfahren zur Verarbeitung von Paketen. Das Verfahren beinhaltet das Empfangen eines ersten Pakets durch ein erstes Socket auf einem Host, das Bestimmen durch das erste Socket, um das erste Paket unter Verwendung einer ersten virtuellen Transmission Control Protocol Offload Engine (VTOE) zu verarbeiten, das Übertragen des ersten Pakets an die erste VTOE, wobei das Übertragen des ersten Pakets an die erste VTOE einen ersten virtuellen Netzwerk-Stack umgeht, der zwischen dem ersten Socket und der ersten VTOE eingefügt ist, das Übertragen des ersten Pakets an eine Hardware Transmission Control Protocol Offload Engine (HW TOE), die operativ mit dem Host verbunden ist, das Verarbeiten des ersten Pakets unter Verwendung der HW TOE, um ein erstes verarbeitetes Paket zu erhalten; und Übertragen des ersten verarbeiteten Pakets an ein Netzwerk, das funktionsfähig mit der HW TOE verbunden ist, wobei die HWTOE der ersten VTOE und einer zweiten VTOE im Host zugeordnet ist.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Aspekte einer Ausführungsform der vorliegenden Erfindung offenbaren ein Verfahren und ein System zur gleichzeitigen Verarbeitung von reihenfolgesensitiven Datenpaketen. Eine Vielzahl von in Folge angeordneten Datenpaketen wird in einer Netzwerkschnittstelleneinheit empfangen. Die Netzwerkschnittstelleneinheit leitet ein erstes Datenpaket von der Vielzahl der in Folge angeordneten Datenpakete an eine erste Auslagerungsengine. Die Netzwerkschnittstelleneinheit leitet ein zweites Datenpaket von der Vielzahl der in Folge angeordneten Datenpakete an eine zweite Auslagerungsengine, wobei das zweite Datenpaket sequenziell auf das erste Datenpaket folgt. Die zweite Auslagerungsengine empfängt Informationen von der ersten Auslagerungsengine, wobei die Informationen zeigen, dass die erste Auslagerungsengine das erste Datenpaket gerade verarbeitet. Auf der Grundlage der an der zweiten Auslagerungsengine empfangenen Informationen verarbeitet die zweite Auslagerungsengine das zweite Datenpaket, so dass kritische Ereignisse bei der Verarbeitung des ersten Datenpakets durch die erste Auslagerungsengine vor kritischen Ereignissen bei der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine auftreten.
  • Von einem ersten Aspekt aus betrachtet stellt die Erfindung ein Verfahren zur gleichzeitigen Verarbeitung von reihenfolgesensitiven Datenpaketen bereit. Das Verfahren weist die Schritte auf: Empfangen einer Vielzahl von in Folge angeordneten Datenpaketen in einer Netzwerkschnittstelleneinheit; Leiten eines ersten Datenpakets der Vielzahl der in Folge angeordneten Datenpakete durch die Netzwerkschnittstelleneinheit an eine erste Auslagerungsengine; Leiten eines zweiten Datenpakets der Vielzahl der in Folge angeordneten Datenpakete durch die Netzwerkschnittstelleneinheit an eine zweite Auslagerungsengine, wobei das zweite Datenpaket sequenziell auf das erste Datenpaket folgt; Empfangen von Informationen von der ersten Auslagerungsengine durch die zweite Auslagerungsengine, wobei die Informationen zeigen, dass die erste Auslagerungsengine das erste Datenpaket gerade verarbeitet; und auf der Grundlage der an der zweiten Auslagerungsengine empfangenen Informationen Verarbeiten des zweiten Datenpakets durch die zweite Auslagerungsengine, so dass kritische Ereignisse bei der Verarbeitung des ersten Datenpakets durch die erste Auslagerungsengine vor kritischen Ereignissen bei der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine auftreten.
  • Vorzugsweise enthalten die von der ersten Auslagerungsengine empfangenen Informationen eines oder mehr aus einer Gruppe, die einen vorhergesagten Speicherplatz eines Zeigers in den Hauptspeicher auf der Grundlage einer Größe des ersten Datenpakets, das von der ersten Auslagerungsengine gerade verarbeitet wird, eine Angabe des Status der Verarbeitung des ersten Datenpakets durch die erste Auslagerungsengine und eine Folgenummer aufweisen.
  • Vorzugsweise beinhaltet die Angabe des Status, ob die erste Auslagerungsengine eine Gültigkeitsprüfung an dem ersten Datenpaket durchgeführt hat, ob ein Prüfpunkt in der Verarbeitung erreicht worden ist, ob ein schwerwiegender Fehler entdeckt worden ist, ob die Verarbeitung des ersten Datenpakets abgeschlossen wurde oder eine Kombination des Vorstehenden.
  • Vorzugsweise gehören zu den kritischen Ereignissen bei der Verarbeitung des ersten und des zweiten Datenpakets das Beginnen der Verarbeitung des jeweiligen ersten oder zweiten Datenpakets, das Durchführen einer Gültigkeitsprüfung, das Durchlaufen von Prüfpunkten in der Verarbeitung und das Schreiben des jeweiligen ersten oder zweiten Datenpakets in den Hauptspeicher.
  • Erfindungsgemäß weist der Schritt der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine in der Weise, dass kritische Ereignisse bei der Verarbeitung des ersten Datenpakets durch die erste Auslagerungsengine vor kritischen Ereignissen bei der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine auftreten, einen oder mehrere der folgenden Schritte auf: Beginnen der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine im Anschluss an den Empfang einer Benachrichtigung von der ersten Auslagerungsengine, dass eine Gültigkeitsprüfung an dem ersten Datenpaket durchgeführt worden ist; Fortsetzen der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine nach einem Prüfpunkt in der Verarbeitung im Anschluss an den Empfang einer Benachrichtigung von der ersten Auslagerungsengine, dass die erste Auslagerungsengine einen entsprechenden Prüfpunkt in der Verarbeitung des ersten Datenpakets durchlaufen hat; und Schreiben des zweiten Datenpakets durch die zweite Auslagerungsengine in den Hauptspeicher im Anschluss an eine Benachrichtigung, dass die erste Auslagerungsengine das erste Datenpakt in den Hauptspeicher geschrieben hat.
  • Vorzugsweise weisen die von der ersten Auslagerungsengine empfangenen Informationen eine Benachrichtigung über einen schwerwiegenden Fehler auf, der bei der Verarbeitung des ersten Datenpakets auftritt, und als Reaktion auf den Empfang der Benachrichtigung über das Auftreten des schwerwiegenden Fehlers lässt die zweite Auslagerungsengine das zweite Datenpaket fallen.
  • Vorzugsweise weist das Verfahren des Weiteren die Schritte auf: die erste Auslagerungsengine hat einen vorhergesagten Speicherplatz eines Zeigers in den Hauptspeicher auf der Grundlage einer Größe des ersten Datenpakets berechnet, das von der ersten Auslagerungsengine gerade verarbeitet wird; und Ausgeben des vorhergesagten Speicherplatzes durch die erste Auslagerungsengine.
  • Vorzugsweise weist das Verfahren des Weiteren die Schritte auf: Feststellen durch die erste Auslagerungsengine, dass das erste Datenpaket eine Gültigkeitsprüfung nicht besteht, und als Reaktion darauf Neuberechnen des vorhergesagten Speicherplatzes eines Zeigers in den Hauptspeicher für das zweite Datenpaket; Ausgeben des neu berechneten vorhergesagten Speicherplatzes durch die erste Auslagerungsengine; und Fallenlassen des ersten Datenpakets durch die erste Auslagerungsengine.
  • Vorzugsweise weist das Verfahren des Weiteren die Schritte auf: Feststellen durch die erste Auslagerungsengine, dass während der Verarbeitung des ersten Datenpakets ein schwerwiegender Fehler aufgetreten ist; und Ausgeben einer Benachrichtigung über den schwerwiegenden Fehler durch die erste Auslagerungsengine.
  • Vorzugsweise weist das Verfahren des Weiteren die Schritte auf: Abschließen der Verarbeitung des ersten Datenpakets durch die erste Auslagerungsengine; Ausgeben einer Benachrichtigung durch die erste Auslagerungseinheit, dass das erste Datenpaket verarbeitet wurde; und Schreiben von Informationen von dem ersten Datenpaket in den Hauptspeicher durch die erste Auslagerungsengine.
  • Vorzugsweise weisen die Prüfpunkte in der Verarbeitung eines oder mehr von Folgendem auf: Senden einer Unterbrechung an eine Softwarekomponente und Aktualisieren einer Kontextspeichereinrichtung.
  • Vorzugsweise stammen das erste und das zweite Datenpaket von demselben logischen Port, Thread oder derselben Eingangsverbindung.
  • Von einem zweiten Aspekt aus betrachtet, stellt die Erfindung ein System zur gleichzeitigen Verarbeitung von reihenfolgesensitiven Datenpaketen bereit, wobei das System aufweist: einen Pufferspeicher, um Datenpakete über eine Netzwerkverbindung zu empfangen; eine Vielzahl von Auslagerungsengines, denen Datenpakete aus dem Pufferspeicher zugewiesen werden können, wobei jede der Vielzahl der Auslagerungsengines in der Lage ist, ein Datenpaket zu verarbeiten und Informationen von einem Datenpaket im Systemspeicher zu speichern; eine Übertragungsschnittstelle zwischen mindestens einer ersten und einer zweiten Auslagerungsengine von der Vielzahl der Auslagerungsengines, wobei die Übertragungsschnittstelle den Empfang von an der ersten Auslagerungsengine ausgegebenen Signalen durch die zweite Auslagerungsengine ermöglicht; wobei das System betrieben werden kann, um: eine Vielzahl von Datenpaketen in dem Pufferspeicher zu empfangen; ein erstes Datenpaket von der Vielzahl der Datenpakete an die erste Auslagerungsengine zu leiten; ein zweites Datenpaket von der Vielzahl der Datenpakete an die zweite Auslagerungsengine zu leiten, wobei das zweite Datenpaket sequenziell auf das erste Datenpaket folgt; Informationen von der ersten Auslagerungsengine an der zweiten Auslagerungsengine zu empfangen, wobei die Informationen zeigen, dass die erste Auslagerungsengine das erste Datenpaket gerade verarbeitet; und auf der Grundlage der an der zweiten Auslagerungsengine empfangenen Informationen das zweite Datenpaket an der zweiten Auslagerungsengine zu verarbeiten, so dass kritische Ereignisse bei der Verarbeitung des ersten Datenpakets durch die erste Auslagerungsengine vor kritischen Ereignissen bei der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine auftreten.
  • Vorzugsweise enthalten die von der ersten Auslagerungsengine empfangenen Informationen eines oder mehr aus einer Gruppe, die aufweist: einen vorhergesagten Speicherplatz eines Zeigers in den Hauptspeicher auf der Grundlage einer Größe des ersten Datenpakets, das von der ersten Auslagerungsengine gerade verarbeitet wird, eine Angabe des Status der Verarbeitung des ersten Datenpakets durch die erste Auslagerungsengine und eine Folgenummer.
  • Vorzugsweise beinhaltet die Angabe des Status, ob die erste Auslagerungsengine eine Gültigkeitsprüfung an dem ersten Datenpaket durchgeführt hat, ob ein Prüfpunkt in der Verarbeitung erreicht worden ist, ob ein schwerwiegender Fehler entdeckt worden ist, ob die Verarbeitung des ersten Datenpakets abgeschlossen wurde oder eine Kombination des Vorstehenden.
  • Vorzugsweise gehören zu den kritischen Ereignissen bei der Verarbeitung des ersten und des zweiten Datenpakets das Beginnen der Verarbeitung des jeweiligen ersten oder zweiten Datenpakets, das Durchführen einer Gültigkeitsprüfung, das Durchlaufen von Prüfpunkten in der Verarbeitung und das Schreiben des jeweiligen ersten oder zweiten Datenpakets in den Hauptspeicher.
  • Erfindungsgemäß wird das System betrieben, um das zweite Datenpaket durch die zweite Auslagerungsengine zu verarbeiten, so dass kritische Ereignisse bei der Verarbeitung des ersten Datenpakets durch die erste Auslagerungsengine vor kritischen Ereignissen bei der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine auftreten. Das System kann betrieben werden, um: mit der Verarbeitung des zweiten Datenpakets an der zweiten Auslagerungsengine im Anschluss an den Empfang einer Benachrichtigung von der ersten Auslagerungsengine, dass an dem ersten Datenpaket eine Gültigkeitsprüfung durchgeführt worden ist, zu beginnen; die Verarbeitung des zweiten Datenpakets an der zweiten Auslagerungsengine nach einem Prüfpunkt in der Verarbeitung im Anschluss an den Empfang einer Benachrichtigung von der ersten Auslagerungsengine, dass die erste Auslagerungsengine einen entsprechenden Prüfpunkt in der Verarbeitung des ersten Datenpakets durchlaufen hat, fortzusetzen; und das zweite Datenpaket im Anschluss an eine Benachrichtigung an der zweiten Auslagerungsengine, dass die erste Auslagerungsengine das erste Datenpaket in den Hauptspeicher geschrieben hat, in den Hauptspeicher zu schreiben.
  • Vorzugsweise weisen die von der ersten Auslagerungsengine empfangenen Informationen eine Benachrichtigung über einen schwerwiegenden Fehler auf, der bei der Verarbeitung des ersten Datenpakets auftritt, und als Reaktion auf den Empfang der Benachrichtigung über das Auftreten des schwerwiegenden Fehlers kann das System betrieben werden, um das zweite Datenpaket fallen zu lassen.
  • Vorzugsweise kann das System des Weiteren betrieben werden, um einen vorhergesagten Speicherplatz eines Zeigers in den Hauptspeicher für das zweite Datenpaket auf der Grundlage einer Größe des ersten Datenpakets, das von der ersten Auslagerungsengine gerade verarbeitet wird, zu berechnen und den vorhergesagten Speicherplatz an der ersten Auslagerungsengine auszugeben.
  • Vorzugsweise kann das System des Weiteren betrieben werden, um an der ersten Auslagerungsengine festzustellen, dass das erste Datenpaket eine Gültigkeitsprüfung nicht besteht, und um als Reaktion darauf den vorhergesagten Speicherplatz eines Zeigers in den Hauptspeicher für das zweite Datenpaket neu zu berechnen; den neu berechneten vorhergesagten Speicherplatz an der ersten Auslagerungsengine auszugeben; und das erste Datenpaket fallen zu lassen.
  • Vorzugsweise kann das System des Weiteren betrieben werden, um festzustellen, dass während der Verarbeitung des ersten Datenpakets ein schwerwiegender Fehler aufgetreten ist und um eine Benachrichtigung über den schwerwiegenden Fehler an der ersten Auslagerungsengine auszugeben.
  • Vorzugsweise kann das System des Weiteren betrieben werden, um die Verarbeitung des ersten Datenpakets an der ersten Auslagerungsengine abzuschließen, eine Benachrichtigung, dass das erste Datenpaket verarbeitet wurde, an der ersten Auslagerungsengine auszugeben und Informationen von dem ersten Datenpaket in den Systemspeicher zu schreiben.
  • Vorzugsweise weisen die Prüfpunkte in der Verarbeitung eines oder mehr von Folgendem auf: Senden einer Unterbrechung an eine Softwarekomponente und Aktualisieren einer Kontextspeichereinrichtung.
  • Vorzugsweise stammen das erste und das zweite Datenpaket von demselben logischen Port, Thread oder derselben Eingangsverbindung.
  • Von einem dritten Aspekt aus betrachtet, stellt die Erfindung ein Computerprogramm bereit, das Computerprogrammcode aufweist, der auf einem von einem Computer lesbaren Datenträger gespeichert ist, um, wenn es in ein Computersystem geladen und darauf ausgeführt wird, das Computersystem zu veranlassen, alle Schritte eines Verfahrens gemäß dem ersten Aspekt durchzuführen.
  • Figurenliste
  • Die Erfindung wird nun lediglich anhand eines Beispiels und mit Bezug auf Ausführungsformen der Erfindung beschrieben, die in den beiliegenden Zeichnungen veranschaulicht sind, bei denen:
    • 1 ein vernetztes Datenverarbeitungssystem gemäß einer der Veranschaulichung dienenden Ausführungsform der vorliegenden Erfindung zeigt;
    • 2 ein beispielhaftes Szenario zeigt, in dem Datenpakete gemäß einer beispielhaften Ausführungsform gerade von Komponenten eines Netzwerkadapters verarbeitet werden;
    • 3 einen anschließenden Zustand der in 2 beschriebenen Verarbeitungsfolge zeigt; und
    • 4 einen ausführlicheren Logikfluss für eine Multithread-Verarbeitung von reihenfolgesensitiven Datenpaketen gemäß einer der Veranschaulichung dienenden Ausführungsform zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die vorliegende Erfindung wird nun mit Bezug auf die Figuren ausführlich beschrieben. 1 zeigt ein vernetztes Datenverarbeitungssystem gemäß einer Ausführungsform der vorliegenden Erfindung, das allgemein mit 100 gekennzeichnet ist. Das Datenverarbeitungssystem 100 weist ein Computersystem 102 auf, das mit einem Netzwerk 104 verbunden ist. Das Netzwerk 104 stellt eine Gruppe von Computern und Einheiten dar, die über Übertragungskanäle miteinander verbunden sind, welche Übertragungen und die gemeinsame Nutzung von Ressourcen durch die miteinander verbundenen Computer und Einheiten vereinfachen. Zu den Übertragungskanälen können drahtgebundene, drahtlose Kommunikationsverbindungen oder Lichtwellenleiterkabel gehören. Das Computersystem 102 kann eine beliebige Datenverarbeitungseinheit wie zum Beispiel ein Server-Computer, ein Client-Computer, ein Notebook, ein Laptop-Computer, ein Tablet-Computer, ein Handheld-Computer oder ein Smartphone, ein Thin Client, ein Router, ein Hub oder eine beliebige andere elektronische Einheit oder ein beliebiges anderes Datenverarbeitungssystem sein, die beziehungsweise das in der Lage ist, mit einer anderen Datenverarbeitungseinheit über ein Netzwerk Daten auszutauschen.
  • Der Netzwerkadapter 106 ermöglicht dem Computersystem 102 den Austausch von Daten über das Netzwerk 104. In einer weiteren Ausführungsform kann jede beliebige Netzwerkschnittstelleneinheit verwendet werden. Der Netzwerkadapter 106 empfängt ankommende Datenpakete in einem Pufferspeicher 108. Bei der Ankunft von Paketen weist der Dispatcher 110 jedes Paket einer der Paketverarbeitungsengines 112, 114, oder 116 zu. Der Dispatcher 110 ist eine Komponente des Netzwerkadapters 106, der Steuerlogik aufweist, um festzustellen, wenn eine Paketverarbeitungsengine frei wird, und um das nächste Paket im Pufferspeicher 108 an die freie Engine zu leiten. Jede der Paketverarbeitungsengines 112, 114 und 116 ist eine Auslagerungsengine, vorzugsweise auf dem Netzwerkadapter 106, die Steuerlogik aufweist, um ein empfangenes Datenpaket zu verarbeiten und Informationen von dem Datenpaket in den Systemspeicher zu schreiben. Die Steuerlogik ist eine Abfolge von Schritten, die zur Ausführung einer bestimmten Funktion erforderlich sind, und in der bevorzugten Ausführungsform ist sie mittels Firmware realisiert, üblicherweise festverdrahteten Computerschaltungen und anderer Hardware oder alternativ Programmanweisungen der unteren Ebene, die in einem Nur-Lese-Speicher (ROM) gespeichert sind und von einer oder mehreren Steuerschaltungen ausgeführt werden.
  • Ausführungsformen der vorliegenden Erfindung erkennen die Schwierigkeit der Multithread-Paketverarbeitung bei der Aufrechterhaltung der Reihenfolge von empfangenen Pakete in den Fällen, in denen dies wünschenswert ist, z.B. wenn Pakete von demselben logischen Port, Thread oder derselben logischen Verbindung empfangen werden. Die Schnittstelle 118 stellt eine Übertragungsschnittstelle zwischen den Paketverarbeitungsengines 112, 114 und 116 bereit, die eine Parallelverarbeitung von reihenfolgesensitiven Datenpaketen ermöglicht. In der dargestellten Ausführungsform sind Ausgabeports einer jeden der Paketverarbeitungsengines 112, 114 und 116 mit Eingabeports einer jeden der anderen Paketverarbeitungsengines von den Engines 112, 114 und 116 verbunden. In einer alternativen Ausführungsform kann die Schnittstelle 118 Übertragungen an eine bestimmte Teilgruppe von allen Paketverarbeitungsengines einschränken. Der Fachmann erkennt, dass das Computersystem 102 in verschiedenen Ausführungsformen eine beliebige Anzahl von Paketverarbeitungsengines enthalten kann. Die Schnittstelle 118 kann verwendet werden, um die Abfolge und den Status von Paketen von demselben logischen Port, Thread oder derselben logischen Verbindung, die gerade von mehreren Verarbeitungsengines verarbeitet werden, zu übertragen, so dass eine Parallelverarbeitung zur Anwendung kommen und die Reihenfolge beibehalten werden kann.
  • Wenn eine Paketverarbeitungsengine ein Datenpaket verarbeitet, tut sie dies in Anbetracht eines Satzes von zueinander in Wechselbeziehung stehenden Bedingungen, die regeln, wie die Verarbeitung gehandhabt wird, d.h. in Anbetracht von Kontextinformationen. Die Verarbeitungsengine kann beispielsweise den Speicherplatz im Hauptspeicher benötigen, an den sie die Informationen in dem Datenpaket nach der Verarbeitung schreiben wird. Ebenso kann die Verarbeitungsengine für Datenpakete eines bestimmten Typs Systemberechtigungen benötigen oder sie kann von einer Reihenfolge in einer Abfolge von Datenpaketen, die für einen bestimmten Thread empfangen wurden, profitieren. Das Computersystem 102 sammelt solche Kontextinformationen in einer Kontextspeichereinrichtung, z.B. einem Cachespeicher, und die Verarbeitungsengine kann die Kontextinformationen von der Kontextspeichereinrichtung erhalten.
  • In der bevorzugten Ausführungsform werden, wenn Datenpakete am Computersystem 102 empfangen werden, Listen mit Hauptspeicherpuffern im Systemspeicher zugeordnet, um die Datenpakete zu empfangen. Zeiger in jede Liste mit Hauptspeicherpuffern und eine Anzahl von verfügbaren Pufferspeichern in jeder Liste werden dem Kontextspeicher 120 hinzugefügt. Der Kontextspeicher 120 kann den aktuellen Zustand von Zeigern und die Anzahl verwalten. Wenn ein Datenpaket für einen bestimmten Thread empfangen wird, kann der Kontextspeicher die aktuelle Position eines Zeigers in den Hauptspeicher, der für den bestimmten Thread zugeordnet ist, an die Paketverarbeitungsengine, die das Datenpaket gerade verarbeitet, sowie die Anzahl der verfügbaren Pufferspeicher übertragen. In verschiedenen Ausführungsformen kann der Kontextspeicher 120 darüber hinaus auch andere Kontextinformationen, z.B. Berechtigungen, an die Paketverarbeitungsengine übertragen. Wenn die Paketverarbeitungsengine 112, 114 oder 116 die Verarbeitung eines Datenpakets abgeschlossen hat, werden die Informationen von dem Datenpaket in den Systemspeicher 122 an den von dem Zeiger angegebenen Speicherplatz geschrieben. Daraufhin wird der Zeiger an den nächsten verfügbaren Pufferspeicher in der Liste bewegt, und der aktualisierte Speicherplatz des Zeigers und jedwede neue Anzahl werden im Kontextspeicher 120 aktualisiert.
  • In einer bevorzugten Ausführungsform der vorliegenden Erfindung wird eine Paketverarbeitungsengine, die als erste mit der Verarbeitung eines Datenpakets für einen logischen Port, Thread oder eine logische Verbindung beginnt, als die primäre Verarbeitungsengine betrachtet und sie empfängt Kontextinformationen aus dem Kontextspeicher 120. Eine Paketverarbeitungsengine, der ein Datenpaket zugewiesen wird, während eine andere Paketverarbeitungsengine bereits ein Datenpaket für denselben logischen Port, Thread oder dieselbe logische Verbindung verarbeitet, wird als eine sekundäre Verarbeitungsengine betrachtet. Eine sekundäre Verarbeitungsengine empfängt über die Schnittstelle 118 Kontextinformationen (Status der primären Verarbeitungsengine, Berechtigungen, eine vorhergesagte Zeigerposition) von der primären Verarbeitungsengine. Die sekundäre Verarbeitungsengine schreibt erst in den Hauptspeicher, wenn sie eine Benachrichtigung empfängt, dass die primäre Verarbeitungsengine in den Hauptspeicher geschrieben hat.
  • 2 zeigt ein beispielhaftes Szenario, in dem Datenpakete gemäß einer der Veranschaulichung dienenden Ausführungsform gerade von Komponenten eines Netzwerkadapters 106 verarbeitet werden.
  • Das Paket 1 des Thread A, das Paket 1 des Thread B und das Paket 2 des Thread A werden am Pufferspeicher 108 empfangen, der als eine First-in-first-out-(FIFO-)Warteschlange realisiert ist. Der Dispatcher 110 sucht die nächste freie Paketverarbeitungsengine, die hier als die Verarbeitungsengine 116 gezeigt ist, und ordnet an, dass das Paket 1 des Thread A von der Verarbeitungsengine 116 verarbeitet wird. Da das Paket 1 des Thread A das erste zu verarbeitende Paket des Thread A ist, ist die Verarbeitungsengine 116 eine primäre Verarbeitungsengine und sie liest mindestens einen Zeiger in eine Hauptspeicher-Liste für den Thread A aus dem Kontextspeicher 120 ein (die Verbindung ist fett dargestellt).
  • Der Dispatcher 110 weist der nächsten freien Paketverarbeitungsengine, die hier als die Verarbeitungsengine 112 gezeigt ist, das nächste Datenpaket, das Paket 1 des Thread B, zu. Keine anderen Paketverarbeitungsengines verarbeiten gerade Datenpakete vom Thread B, so dass die Verarbeitungsengine 112 ebenfalls eine primäre Verarbeitungsengine ist und mindestens einen Zeiger in eine Hauptspeicher-Liste für den Thread B aus dem Kontextspeicher 120 einliest.
  • Schließlich weist der Dispatcher 110 der Verarbeitungsengine 114 das Paket 2 des Thread A zu. Da das Paket 1 des Thread A gerade gleichzeitig von der Verarbeitungsengine 116 verarbeitet wird, ist die Verarbeitungsengine 114 eine sekundäre Verarbeitungsengine. Die Verarbeitungsengine 116, die die Funktion einer primären Verarbeitungsengine hat, sagt den Speicherplatz des Zeigers in die Hauptspeicher-Liste für den Thread A für das nächste sequenzielle Paket auf der Grundlage der Größe des Datenpakets vorher, das von der Verarbeitungsengine 116 gerade verarbeitet wird. Kontextinformationen, zu denen mindestens der vorhergesagte Speicherplatz des Zeigers in den Hauptspeicher gehören, werden an die Ausgabeports der Verarbeitungsengine 116 gestellt. Die Verarbeitungsengine 114 als die sekundäre Verarbeitungsengine liest Kontextinformationen nicht aus dem Kontextspeicher 120, sondern aus der primären Verarbeitungsengine, der Verarbeitungsengine 116 (die Verbindung ist fett dargestellt). Die Verarbeitungsengine 116 kann auch Statusaktualisierungen ausgeben, so dass die sekundären Verarbeitungsengines feststellen können, wie weit sie bei der Verarbeitung ihrer eigenen Datenpakete fortschreiten dürfen.
  • 3 zeigt einen anschließenden Zustand der in 2 beschriebenen Verarbeitungsfolge. Nachdem die Verarbeitungsengine 116 die Verarbeitung des Pakets 1 des Thread A abgeschlossen hat, wird die Verarbeitungsengine 114 die neue primäre Engine. Der Dispatcher 110 weist der nun freien Verarbeitungsengine 116 ein weiteres, vom Pufferspeicher 108 empfangenes Paket, das Paket 3 des Thread A, zu. Die Verarbeitungsengine 116 ist für die Verarbeitungsengine 114 nun eine sekundäre Verarbeitungsengine. Die Verarbeitungsengine 114 sagt Kontextinformationen für das nächste sequenzielle Paket voraus, z.B., worauf der Zeiger in den Hauptspeicher zeigen wird, wenn die Verarbeitung des Pakets 2 des Thread A abgeschlossen ist, und stellt die Kontextinformationen an einen Ausgabeport, auf den die Verarbeitungsengine 116 zugreifen kann.
  • 4 zeigt einen ausführlicheren Logikfluss (Steuerlogik 400) für eine Multithread-Verarbeitung von Datenpaketen mit einer ganz bestimmten Reihenfolge gemäß einer der Veranschaulichung dienenden Ausführungsform.
  • Die Steuerlogik 400 empfängt ein Datenpaket in einem Pufferspeicher (Schritt 402) und sucht freie Verarbeitungsengines (Schritt 404), an die das Datenpaket ausgelagert werden kann. Im Schritt 406 stellt die Steuerlogik 400 fest, ob eine andere Verarbeitungsengine gerade ein Datenpaket von demselben Thread (oder von einer anderen logischen Verbindung, die eine ganz bestimmte Reihenfolge zwischen den Datenpaketen erforderlich macht) verarbeitet (Entscheidung 406).
  • Als Reaktion auf die Feststellung, dass es kein anderes Datenpaket von demselben Thread gibt, das gerade verarbeitet wird (Nein-Verzweigung der Entscheidung 406), weist die Steuerlogik 400 das Datenpaket der freien Verarbeitungsengine zu und kennzeichnet die Verarbeitungsengine als eine primäre Verarbeitungsengine oder legt sie als primäre Verarbeitungsengine fest (Schritt 408). In einer Ausführungsform wird der Verarbeitungsengine ein Markierungswert übergeben, der anzeigt, dass es sich um eine primäre Verarbeitungsengine handelt. In einer zweiten Ausführungsform kann der Verarbeitungsengine eine Adresse übergeben werden, von der Kontextinformationen gelesen werden können, wobei es sich bei der Adresse um eine Adresse einer Kontextspeichereinrichtung handelt, die beispielsweise Zeiger in einen für empfangene Daten zugeordneten Hauptspeicher, eine aktuelle Anzahl von Elementen in dem zugeordneten Speicher, eine Reihenfolge, verschiedene Berechtigungen usw. enthält (z.B. den Kontextspeicher 120).
  • Im Schritt 410 liest die Steuerlogik 400 Kontextwerte aus der Kontextspeichereinrichtung in die Verarbeitungsengine ein und kann mit der Verarbeitung des Datenpakets beginnen. Die Steuerlogik 400 berechnet Kontextwerte für ein nachfolgendes sequenzielles Datenpaket und gibt sie aus (Schritt 412). Zum Beispiel kann die Steuerlogik 400 auf der Grundlage der Größe des Datenpakets, das gerade verarbeitet wird, vorhersagen, worauf der Zeiger in den Hauptspeicher zeigen wird, nachdem das Datenpaket in den Hauptspeicher geschrieben worden ist. Der vorhergesagte Zeigerwert kann an einen oder mehrere Ausgabeports der Verarbeitungsengine gestellt werden. Zusätzlich kann die Verarbeitungsengine das nächste sequenzielle Datenpaket, das verarbeitet werden soll, verschiedene Berechtigungen und einen aktuellen Status ihrer eigenen Verarbeitungsfolge ausgeben.
  • Die Steuerlogik 400 führt eine Gültigkeitsprüfung des Datenpakets in der Verarbeitungsengine durch (Schritt 414). Üblicherweise führen Fehler in dem Datenpaket dazu, dass das Datenpaket fallengelassen wird und die Verarbeitung mit dem nächsten Datenpaket fortfährt. Die Verarbeitungsengine führt eine oder mehrere Gültigkeitsprüfungen durch, zum Beispiel, indem sie eine Prüfsumme berechnet, und stellt fest, ob in dem Datenpaket Fehler vorhanden sind (Entscheidung 416).
  • Wenn festgestellt wird, dass das Datenpaket ungültig ist (Nein-Verzweigung der Entscheidung 416), ändert die Steuerlogik 400 die von der Verarbeitungsengine ausgegebenen Kontextwerte (Schritt 418), um in Anbetracht des bevorstehenden Fallenlassens des Pakets die richtigen Werte anzugeben. Zum Beispiel wird der Zeiger in den Hauptspeicher für das nächste Datenpaket nicht vorgerückt. Im Anschluss an das Ändern der Kontextwerte lässt die Steuerlogik 400 das Datenpaket fallen (Schritt 420) und gibt einen Hinweis aus, dass die Verarbeitungsengine ihre Gültigkeitsprüfung durchgeführt hat (Schritt 422), so dass nachfolgende Datenpakete verarbeitet werden können.
  • Wenn andererseits festgestellt wird, dass das Datenpaket gültig ist (Ja-Verzweigung der Entscheidung 416), gibt die Steuerlogik 400 einen Hinweis aus, dass die Verarbeitungsengine ihre Gültigkeitsprüfung durchgeführt hat (Schritt 424), so dass ein nachfolgendes sequenzielles Datenpaket auf der Grundlage der ursprünglich (vom Schritt 412) berechneten Kontextwerte verarbeitet werden kann.
  • Im Anschluss an die Gültigkeitsprüfung stellt die Steuerlogik 400 fest, ob in der Verarbeitungsengine ein schwerwiegender Fehler aufgetreten ist (Entscheidung 426). Wenn ein schwerwiegender Fehler entdeckt wird (Ja-Verzweigung der Entscheidung 426), gibt die Verarbeitungsengine einen Hinweis auf den schwerwiegenden Fehler aus (Schritt 428). Wenn kein schwerwiegender Fehler entdeckt wird (Nein-Verzweigung der Entscheidung 426), stellt die Steuerlogik 400 fest, ob die Verarbeitung des Datenpakets einen Festschreibungs-Prüfpunkt durchlaufen hat (Entscheidung 430). An bestimmten Punkten in der Paketverarbeitung kann eine sekundäre Verarbeitungsengine, die ein nachfolgendes Datenpaket verarbeitet, bestimmte Aktionen erst durchführen, wenn die primäre Verarbeitungsengine dieselbe Aktion abgeschlossen hat. Beispielsweise muss eine Verarbeitungsengine im Verlauf der Verarbeitung eines Datenpakets möglicherweise eine Unterbrechung an verschiedene Softwarekomponenten senden. Diese Aktion muss gegebenenfalls von einer primären Verarbeitungsengine abgeschlossen worden sein, bevor eine sekundäre Verarbeitungsengine die Unterbrechung sendet. Als ein weiteres Beispiel aktualisieren Verarbeitungsengines die Kontextspeichereinrichtung, wenn sie ein Datenpaket verarbeiten. Die Kontextspeichereinrichtung sollte von einer Verarbeitungsengine aktualisiert werden, die ein erstes Datenpaket verarbeitet hat, bevor die Kontextspeichereinrichtung von einer Verarbeitungsengine aktualisiert wird, die ein nachfolgendes zweites Datenpaket verarbeitet.
  • Wenn die Steuerlogik 400 feststellt, dass ein solcher Prüfpunkt durchlaufen wurde (Ja-Verzweigung der Entscheidung 430), gibt die Steuerlogik 400 eine Benachrichtigung über den durchlaufenen Prüfpunkt von der Verarbeitungsengine aus (Schritt 432). Im Anschluss an die Ausgabe der Benachrichtigung im Schritt 432 oder alternativ im Anschluss an die Feststellung, dass ein Prüfpunkt nicht durchlaufen wurde (Nein-Verzweigung der Entscheidung 430), stellt die Steuerlogik 400 fest, ob die Verarbeitungsengine die Verarbeitung des Datenpakets abgeschlossen hat (Entscheidung 434). Wenn die Verarbeitungsengine mit der Verarbeitung des Datenpakets noch nicht fertig ist (Nein-Verzweigung der Entscheidung 434), fährt die Verarbeitungsengine mit der Verarbeitung des Datenpakets fort, während sie die Schritte 426 bis 434 iterativ durchläuft, um festzustellen, ob ein schwerwiegender Fehler entdeckt worden ist, ob Prüfpunkte abgeschlossen wurden und ob die Verarbeitungsengine die Verarbeitung des Datenpakets abgeschlossen hat.
  • Wenn die Verarbeitungsengine die Verarbeitung des Datenpakets abgeschlossen hat (Ja-Verzweigung der Entscheidung 434), gibt die Steuerlogik 400 einen Hinweis auf den Abschluss von der Verarbeitungsengine aus (Schritt 436) und schreibt die Informationen des Datenpakets in den Hauptspeicher (Schritt 438), wobei sie in einer bevorzugten Ausführungsform den Zeiger in den Hauptspeicher verwendet, welcher der Verarbeitungsengine von der Kontextspeichereinrichtung übergeben wurde.
  • Nehmen wir nochmals Bezug auf die Entscheidung 406. Wenn festgestellt wird, dass eine andere Verarbeitungsengine gerade ein Datenpaket desselben Thread verarbeitet (Ja-Verzweigung der Entscheidung 406), weist die Steuerlogik 400 das Datenpaket der freien Verarbeitungsengine zu, kennzeichnet die Verarbeitungsengine als sekundäre Verarbeitungsengine oder legt sie als sekundäre Verarbeitungsengine fest und gibt die primäre Verarbeitungsengine an (Schritt 440). In einer Ausführungsform wird der Verarbeitungsengine ein Markierungswert übergeben, der anzeigt, dass es sich um eine sekundäre Verarbeitungsengine handelt. In einer zweiten Ausführungsform wird eine Adresse übergeben, von der Kontextinformationen gelesen werden sollen, wobei es sich bei der Adresse um eine oder mehrere Ausgaben der primären Verarbeitungsengine handelt. In einer solchen Ausführungsform kann die Adresse, die übergeben wird, dazu dienen, die Verarbeitungsengine als eine sekundäre Verarbeitungsengine festzulegen und die primäre Verarbeitungsengine anzugeben.
  • Die Steuerlogik 400 liest Kontextwerte aus der primären Verarbeitungsengine in die sekundäre Verarbeitungsengine ein (Schritt 442). Die Kontextwerte können Abfolgeinformationen, einen berechneten oder vorhergesagten Speicherplatz eines Zeigers in den Hauptspeicher, verschiedene Berechtigungen, den Status der primären Verarbeitungsengine usw. enthalten. Auf der Grundlage der empfangenen Kontextwerte stellt die Steuerlogik 400 fest, ob die primäre Verarbeitungsengine eine Gültigkeitsprüfung für das Datenpaket, das von der primären Verarbeitungsengine gerade verarbeitet wird, durchgeführt hat (Entscheidung 444).
  • Wenn die primäre Verarbeitungsengine noch keine Gültigkeitsprüfung durchgeführt hat (Nein-Verzweigung der Entscheidung 444), beginnt die sekundäre Verarbeitungsengine nicht mit der Verarbeitung ihres eigenen Datenpakets und liest weiterhin Werte aus der primären Verarbeitungsengine ein, bis sie einen Hinweis empfängt, dass die Prüfung durchgeführt worden ist. Wenn die Gültigkeitsprüfung durchgeführt worden ist (Ja-Verzweigung der Entscheidung 444), beginnt die Steuerlogik 400 mit der Verarbeitung des Datenpakets in der sekundären Verarbeitungsengine (Schritt 446).
  • Die Steuerlogik 400 stellt fest, ob ein Festschreibungs-Prüfpunkt erreicht wurde (Entscheidung 448), an dem die sekundäre Verarbeitungsengine keine Aktion durchführen und auch nicht mit der Verarbeitung des Datenpakets fortfahren kann, bevor die primäre Verarbeitungsengine nicht einen entsprechenden Prüfpunkt durchlaufen hat. Wenn ein solcher Prüfpunkt erreicht wurde (Ja-Verzweigung der Entscheidung 448), stellt die Steuerlogik 400 fest, ob die primäre Verarbeitungsengine den Prüfpunkt durchlaufen hat (Entscheidung 450). Wenn die primäre Verarbeitungsengine den Prüfpunkt nicht durchlaufen hat (Nein-Verzweigung der Entscheidung 450), wird die Verarbeitung nicht fortgesetzt, und die Steuerlogik 400 prüft weiterhin, ob die primäre Verarbeitungsengine den Prüfpunkt durchläuft. Wenn die primäre Verarbeitungsengine den Festschreibungs-Prüfpunkt durchlaufen hat (Ja-Verzweigung der Entscheidung 450) oder wenn alternativ kein Prüfpunkt erreicht wurde (Nein-Verzweigung der Entscheidung 448), stellt die Steuerlogik 400 fest, ob schwerwiegende Fehler von der primären Verarbeitungsengine entdeckt worden sind (Entscheidung 452).
  • Wenn die sekundäre Verarbeitungsengine einen Hinweis empfängt, dass die primäre Verarbeitungsengine einen schwerwiegenden Fehler entdeckt hat (Ja-Verzweigung der Entscheidung 452), beendet die sekundäre Verarbeitungsengine still die Verarbeitung ihres eigenen Datenpakets, indem sie keine Software benachrichtigt und keinen Kontext in die Kontextspeichereinrichtung zurückspeichert. Wenn kein Hinweis auf einen schwerwiegenden Fehler empfangen wurde (Nein-Verzweigung der Entscheidung 452), stellt die Steuerlogik 400 fest, ob die sekundäre Verarbeitungsengine die Verarbeitung des Datenpakets abgeschlossen hat (Entscheidung 454).
  • Wenn die sekundäre Verarbeitungsengine die Verarbeitung des Datenpakets nicht abgeschlossen hat (Nein-Verzweigung der Entscheidung 454), fährt die sekundäre Verarbeitungsengine mit der Verarbeitung des Datenpakets fort, während sie die Schritte 448 bis 454 iterativ durchläuft, um festzustellen, ob die primäre Verarbeitungsengine Prüfpunkte durchlaufen hat, die von der sekundären Verarbeitungsengine erreicht wurden, ob in der primären Verarbeitungsengine ein schwerwiegender Fehler entdeckt worden ist und ob die sekundäre Verarbeitungsengine die Verarbeitung des Datenpakets abgeschlossen hat.
  • Wenn die sekundäre Verarbeitungsengine die Verarbeitung des Datenpakets abgeschlossen hat (Ja-Verzweigung der Entscheidung 454), stellt die Steuerlogik 400 fest, ob die primäre Verarbeitungsengine mit der Verarbeitung ihres eigenen Datenpakets fertig ist (Entscheidung 456), und wenn nicht (Nein-Verzweigung der Entscheidung 456), wartet sie, bis die primäre Verarbeitungsengine ihre Verarbeitung abgeschlossen hat. Wenn die primäre Verarbeitungsengine fertig ist (Ja-Verzweigung der Entscheidung 456), schreibt die Steuerlogik 400 die Informationen von dem Datenpaket, das von der sekundären Verarbeitungsengine gerade verarbeitet wird, in den Hauptspeicher (Schritt 458), wobei sie in einer bevorzugten Ausführungsform den Zeiger in den Hauptspeicher verwendet, den die primäre Verarbeitungsengine der sekundären Verarbeitungsengine übergeben hat.
  • Auf der Grundlage des Vorstehenden wurden ein Verfahren und ein System zur Durchführung einer Multithread-Verarbeitung an reihenfolgesensitiven Datenpaketen offenbart. Jedoch können zahlreiche Änderungen und Ersetzungen vorgenommen werden, ohne vom Umfang der vorliegenden Erfindung abzuweichen. In dieser Hinsicht kann jeder Block in den Ablaufplänen oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Steuerlogik zur Durchführung der angegebenen logischen Funktion(en) darstellen. Es sei auch angemerkt, dass die in den Blöcken angegebenen Funktionen in manchen alternativen Ausführungsarten mitunter in einer anderen als in der in den Figuren angegebenen Reihenfolge auftreten können. Daher wurde die vorliegende Erfindung anhand eines Beispiels und nicht mittels einer Einschränkung offenbart.

Claims (23)

  1. Verfahren zur gleichzeitigen Verarbeitung von reihenfolgesensitiven Datenpaketen, wobei das Verfahren die Schritte aufweist: Empfangen einer Vielzahl von in Folge angeordneten Datenpaketen in einer Netzwerkschnittstelleneinheit; durch die Netzwerkschnittstelleneinheit Leiten eines ersten Datenpakets von der Vielzahl der in Folge angeordneten Datenpakete an eine erste Auslagerungsengine; durch die Netzwerkschnittstelleneinheit Leiten eines zweiten Datenpakets von der Vielzahl der in Folge angeordneten Datenpakete an eine zweite Auslagerungsengine, wobei das zweite Datenpaket sequenziell auf das erste Datenpaket folgt; Empfangen von Informationen von der ersten Auslagerungsengine durch die zweite Auslagerungsengine, wobei die Informationen zeigen, dass die erste Auslagerungsengine das erste Datenpaket gerade verarbeitet; und auf der Grundlage der an der zweiten Auslagerungsengine empfangenen Informationen Verarbeiten des zweiten Datenpakets durch die zweite Auslagerungsengine, so dass kritische Ereignisse bei der Verarbeitung des ersten Datenpakets durch die erste Auslagerungsengine vor kritischen Ereignissen bei der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine auftreten, wobei der Schritt der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine, so dass kritische Ereignisse bei der Verarbeitung des ersten Datenpakets durch die erste Auslagerungsengine vor kritischen Ereignissen bei der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine auftreten, einen oder mehrere der folgenden Schritte aufweist: Beginnen der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine im Anschluss an den Empfang einer Benachrichtigung von der ersten Auslagerungsengine, dass eine Gültigkeitsprüfung an dem ersten Datenpaket durchgeführt wurde; Fortsetzen der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine nach einem Prüfpunkt in der Verarbeitung im Anschluss an den Empfang einer Benachrichtigung von der ersten Auslagerungsengine, dass die erste Auslagerungsengine einen entsprechenden Prüfpunkt in der Verarbeitung des ersten Datenpakets durchlaufen hat; und Schreiben des zweiten Datenpakets in den Hauptspeicher durch die zweite Auslagerungsengine im Anschluss an eine Benachrichtigung, dass die erste Auslagerungsengine das erste Datenpaket in den Hauptspeicher geschrieben hat.
  2. Verfahren nach Anspruch 1, wobei die von der ersten Auslagerungsengine empfangenen Informationen eines oder mehr aus einer Gruppe enthalten, die aufweist: einen vorhergesagten Speicherplatz eines Zeigers in den Hauptspeicher auf der Grundlage einer Größe des ersten Datenpakets, das von der ersten Auslagerungsengine gerade verarbeitet wird, eine Angabe des Status der Verarbeitung des ersten Datenpakets durch die erste Auslagerungsengine und eine Folgenummer.
  3. Verfahren nach Anspruch 2, wobei die Angabe des Status beinhaltet, ob die erste Auslagerungsengine eine Gültigkeitsprüfung an dem ersten Datenpaket durchgeführt hat, ob ein Prüfpunkt in der Verarbeitung erreicht worden ist, ob ein schwerwiegender Fehler entdeckt worden ist, ob die Verarbeitung des ersten Datenpakets abgeschlossen wurde oder eine Kombination des Vorstehenden.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei zu den kritischen Ereignissen bei der Verarbeitung des ersten und des zweiten Datenpakets gehören: das Beginnen der Verarbeitung des jeweiligen ersten oder zweiten Datenpakets, das Durchführen einer Gültigkeitsprüfung, das Durchlaufen von Prüfpunkten in der Verarbeitung und das Schreiben des jeweiligen ersten oder zweiten Datenpakets in den Hauptspeicher.
  5. Verfahren nach einem der vorhergehenden Ansprüche, wobei die von der ersten Auslagerungsengine empfangenen Informationen eine Benachrichtigung über einen schwerwiegenden Fehler aufweisen, der bei der Verarbeitung des ersten Datenpakets auftritt, und als Reaktion auf den Empfang der Benachrichtigung über das Auftreten des schwerwiegenden Fehlers Fallenlassen des zweiten Datenpakets durch die zweite Auslagerungsengine.
  6. Verfahren nach einem der vorhergehenden Ansprüche, das des Weiteren die Schritte aufweist: die erste Auslagerungsengine hat einen vorhergesagten Speicherplatz eines Zeigers in den Hauptspeicher auf der Grundlage einer Größe des ersten Datenpakets berechnet, das von der ersten Auslagerungsengine gerade verarbeitet wird; und Ausgeben des vorhergesagten Speicherplatzes durch die erste Auslagerungsengine.
  7. Verfahren nach Anspruch 6, das des Weiteren die Schritte aufweist: Feststellen durch die erste Auslagerungsengine, dass das erste Datenpaket eine Gültigkeitsprüfung nicht besteht und als Reaktion darauf Neuberechnen des vorhergesagten Speicherplatzes eines Zeigers in den Hauptspeicher für das zweite Datenpaket; Ausgeben des neu berechneten vorhergesagten Speicherplatzes durch die erste Auslagerungsengine; und Fallenlassen des ersten Datenpakets durch die erste Auslagerungsengine.
  8. Verfahren nach einem der Ansprüche 1 bis 6, das des Weiteren die Schritte aufweist: Feststellen durch die erste Auslagerungsengine, dass während der Verarbeitung des ersten Datenpakets ein schwerwiegender Fehler aufgetreten ist; und Ausgeben einer Benachrichtigung über den schwerwiegenden Fehler durch die erste Auslagerungsengine.
  9. Verfahren nach einem der Ansprüche 1 bis 6, das des Weiteren die Schritte aufweist: Abschließen der Verarbeitung des ersten Datenpakets durch die erste Auslagerungsengine; Ausgeben einer Benachrichtigung, dass das erste Datenpaket verarbeitet worden ist, durch die erste Auslagerungsengine; und Schreiben von Informationen von dem ersten Datenpaket in den Hauptspeicher durch die erste Auslagerungsengine.
  10. Verfahren nach Anspruch 4, wobei die Prüfpunkte in der Verarbeitung eines oder mehr von Folgendem aufweisen: Senden einer Unterbrechung an eine Softwarekomponente und Aktualisieren einer Kontextspeichereinrichtung.
  11. Verfahren nach einem der vorhergehenden Ansprüche, wobei das erste und das zweite Datenpaket von demselben logischen Port, Thread oder derselben Eingangsverbindung stammen.
  12. System zur gleichzeitigen Verarbeitung von reihenfolgesensitiven Datenpaketen, wobei das System aufweist: einen Pufferspeicher, um Datenpakete über eine Netzwerkverbindung zu empfangen; eine Vielzahl von Auslagerungsengines, denen Datenpakete aus dem Pufferspeicher zugewiesen werden können, wobei jede der Vielzahl der Auslagerungsengines in der Lage ist, ein Datenpaket zu verarbeiten und Informationen von einem Datenpaket im Systemspeicher zu speichern; eine Übertragungsschnittstelle zwischen mindestens einer ersten und einer zweiten Auslagerungsengine von der Vielzahl der Auslagerungsengines, wobei die Übertragungsschnittstelle den Empfang von an der ersten Auslagerungsengine ausgegebenen Signalen durch die zweite Auslagerungsengine ermöglicht; wobei das System betrieben werden kann, um: eine Vielzahl von Datenpaketen in dem Pufferspeicher zu empfangen; ein erstes Datenpaket von der Vielzahl der Datenpakete an die erste Auslagerungsengine zu leiten; ein zweites Datenpaket von der Vielzahl der Datenpakete an die zweite Auslagerungsengine zu leiten, wobei das zweite Datenpaket sequenziell auf das erste Datenpaket folgt; Informationen von der ersten Auslagerungsengine an der zweiten Auslagerungsengine zu empfangen, wobei die Informationen zeigen, dass die erste Auslagerungsengine das erste Datenpaket gerade verarbeitet; und auf der Grundlage der an der zweiten Auslagerungsengine empfangenen Informationen das zweite Datenpaket an der zweiten Auslagerungsengine zu verarbeiten, so dass kritische Ereignisse bei der Verarbeitung des ersten Datenpakets durch die erste Auslagerungsengine vor kritischen Ereignissen bei der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine auftreten, wobei die Betreibbarkeit des Systems, um das zweite Datenpaket durch die zweite Auslagerungsengine zu verarbeiten, so dass kritische Ereignisse bei der Verarbeitung des ersten Datenpakets durch die erste Auslagerungsengine vor kritischen Ereignissen bei der Verarbeitung des zweiten Datenpakets durch die zweite Auslagerungsengine auftreten, aufweist, dass das System betrieben werden kann, um: mit der Verarbeitung des zweiten Datenpakets an der zweiten Auslagerungsengine im Anschluss an den Empfang einer Benachrichtigung von der ersten Auslagerungsengine, dass eine Gültigkeitsprüfung an dem ersten Datenpaket durchgeführt wurde, zu beginnen; die Verarbeitung des zweiten Datenpakets an der zweiten Auslagerungsengine nach einem Prüfpunkt in der Verarbeitung im Anschluss an den Empfang einer Benachrichtigung von der ersten Auslagerungsengine, dass die erste Auslagerungsengine einen entsprechenden Prüfpunkt in der Verarbeitung des ersten Datenpakets durchlaufen hat, fortzusetzen; und das zweite Datenpaket im Anschluss an eine Benachrichtigung an der zweiten Auslagerungsengine, dass die erste Auslagerungsengine das erste Datenpaket in den Hauptspeicher geschrieben hat, in den Hauptspeicher zu schreiben.
  13. System nach Anspruch 12, wobei die von der ersten Auslagerungsengine empfangenen Informationen eines oder mehr aus einer Gruppe enthalten, die aufweist: einen vorhergesagten Speicherplatz eines Zeigers in den Hauptspeicher auf der Grundlage einer Größe des ersten Datenpakets, das von der ersten Auslagerungsengine gerade verarbeitet wird, eine Angabe des Status der Verarbeitung des ersten Datenpakets durch die erste Auslagerungsengine und eine Folgenummer.
  14. System nach Anspruch 13, wobei die Angabe des Status beinhaltet, ob die erste Auslagerungsengine eine Gültigkeitsprüfung an dem ersten Datenpaket durchgeführt hat, ob ein Prüfpunkt in der Verarbeitung erreicht worden ist, ob ein schwerwiegender Fehler entdeckt worden ist, ob die Verarbeitung des ersten Datenpakets abgeschlossen wurde oder eine Kombination des Vorstehenden.
  15. System nach einem der Ansprüche 12 bis 14, wobei zu den kritischen Ereignissen bei der Verarbeitung des ersten und des zweiten Datenpakets gehören: das Beginnen der Verarbeitung des jeweiligen ersten oder zweiten Datenpakets, das Durchführen einer Gültigkeitsprüfung, das Durchlaufen von Prüfpunkten in der Verarbeitung und das Schreiben des jeweiligen ersten oder zweiten Datenpakets in den Hauptspeicher.
  16. System nach einem der Ansprüche 12 bis 15, wobei die von der ersten Auslagerungsengine empfangenen Informationen eine Benachrichtigung über einen schwerwiegenden Fehler aufweisen, der bei der Verarbeitung des ersten Datenpakets auftritt, und als Reaktion auf den Empfang der Benachrichtigung über das Auftreten des schwerwiegenden Fehlers kann das System betrieben werden, um das zweite Datenpaket fallenzulassen.
  17. System nach einem der Ansprüche 12 bis 16, wobei das System des Weiteren betrieben werden kann, um: einen vorhergesagten Speicherplatz eines Zeigers in den Hauptspeicher für das zweite Datenpaket auf der Grundlage einer Größe des ersten Datenpakets zu berechnen, das von der ersten Auslagerungsengine gerade verarbeitet wird; und den vorhergesagten Speicherplatz an der ersten Auslagerungsengine auszugeben.
  18. System nach Anspruch 17, wobei das System des Weiteren betrieben werden kann, um: an der ersten Auslagerungsengine festzustellen, dass das erste Datenpaket eine Gültigkeitsprüfung nicht besteht und als Reaktion darauf den vorhergesagten Speicherplatz eines Zeigers in den Hauptspeicher für das zweite Datenpaket neu zu berechnen; den neu berechneten vorhergesagten Speicherplatz an der ersten Auslagerungsengine auszugeben; und das erste Datenpaket fallenzulassen.
  19. System nach einem der Ansprüche 12 bis 17, wobei das System des Weiteren betrieben werden kann, um: festzustellen, dass während der Verarbeitung des ersten Datenpakets ein schwerwiegender Fehler aufgetreten ist; und eine Benachrichtigung über den schwerwiegenden Fehler an der ersten Auslagerungsengine auszugeben.
  20. System nach einem der Ansprüche 12 bis 17, wobei das System des Weiteren betrieben werden kann, um: die Verarbeitung des ersten Datenpakets an der ersten Auslagerungsengine abzuschließen; an der ersten Auslagerungsengine eine Benachrichtigung auszugeben, dass das erste Datenpaket verarbeitet worden ist; und Informationen von dem ersten Datenpaket in den Systemspeicher zu schreiben.
  21. System nach Anspruch 15, wobei die Prüfpunkte in der Verarbeitung eines oder mehr von Folgendem aufweisen: Senden einer Unterbrechung an eine Softwarekomponente und Aktualisieren einer Kontextspeichereinrichtung.
  22. System nach einem der Ansprüche 12 bis 21, wobei das erste und das zweite Datenpaket von demselben logischen Port, Thread oder derselben Eingangsverbindung stammen.
  23. Computerprogramm, das Computerprogrammcode aufweist, der auf einem von einem Computer lesbaren Datenträger gespeichert ist, um, wenn es in ein Computersystem geladen und darauf ausgeführt wird, das Computersystem zu veranlassen, alle Schritte eines Verfahrens nach einem der Ansprüche 1 bis 11 durchzuführen.
DE112013001211.1T 2012-02-29 2013-02-15 Multithread-Paketverarbeitung Active DE112013001211B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/408,575 2012-02-29
US13/408,575 US8934332B2 (en) 2012-02-29 2012-02-29 Multi-threaded packet processing
PCT/IB2013/051223 WO2013128320A1 (en) 2012-02-29 2013-02-15 Multi-threaded packet processing

Publications (2)

Publication Number Publication Date
DE112013001211T5 DE112013001211T5 (de) 2014-11-13
DE112013001211B4 true DE112013001211B4 (de) 2020-04-23

Family

ID=49002751

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013001211.1T Active DE112013001211B4 (de) 2012-02-29 2013-02-15 Multithread-Paketverarbeitung

Country Status (5)

Country Link
US (1) US8934332B2 (de)
CN (1) CN104094558B (de)
DE (1) DE112013001211B4 (de)
GB (1) GB2513809B (de)
WO (1) WO2013128320A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105608208B (zh) * 2015-12-28 2019-04-02 上海瀚之友信息技术服务有限公司 一种大数据并发存储系统及方法
CN106201696A (zh) * 2016-07-15 2016-12-07 东软集团股份有限公司 用于线程的方法和装置
US11895177B2 (en) * 2016-09-30 2024-02-06 Wisconsin Alumni Research Foundation State extractor for middlebox management system
US12019920B2 (en) 2018-01-29 2024-06-25 Micron Technology, Inc. Memory controller with programmable atomic operations
EP3746902B1 (de) * 2018-01-29 2023-09-27 Micron Technology, Inc. Speichersteuergerät
CN112333044B (zh) * 2020-10-29 2022-07-15 北京锐安科技有限公司 分流设备性能测试方法、装置、系统、电子设备以及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5664200A (en) 1991-10-22 1997-09-02 Bull Hn Information Systems Inc. Apparatus and method for providing more effective reiterations of interrupt requests in a multiprocessor system
US20030235194A1 (en) 2002-06-04 2003-12-25 Mike Morrison Network processor with multiple multi-threaded packet-type specific engines
US7751401B2 (en) 2008-06-30 2010-07-06 Oracle America, Inc. Method and apparatus to provide virtual toe interface with fail-over

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7961723B2 (en) 2002-10-08 2011-06-14 Netlogic Microsystems, Inc. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US7324540B2 (en) 2002-12-31 2008-01-29 Intel Corporation Network protocol off-load engines
US20050060538A1 (en) 2003-09-15 2005-03-17 Intel Corporation Method, system, and program for processing of fragmented datagrams
US7626987B2 (en) 2003-11-12 2009-12-01 Cisco Technology, Inc. Using ordered locking mechanisms to maintain sequences of items such as packets
US6996070B2 (en) 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing
US7949792B2 (en) * 2004-02-27 2011-05-24 Cisco Technology, Inc. Encoding a TCP offload engine within FCP
US7779132B1 (en) * 2005-11-14 2010-08-17 Oracle America, Inc. Method and apparatus for supporting multiple transport layer implementations under a socket interface
US8028071B1 (en) * 2006-02-15 2011-09-27 Vmware, Inc. TCP/IP offload engine virtualization system and methods
US7698304B2 (en) * 2006-03-17 2010-04-13 Microsoft Corporation Caching data in a distributed system
JP5083757B2 (ja) * 2007-04-19 2012-11-28 インターナショナル・ビジネス・マシーンズ・コーポレーション データをキャッシュする技術
JP5207895B2 (ja) * 2008-09-17 2013-06-12 キヤノン株式会社 送信装置、受信装置、及び方法、プログラム
CN102763381B (zh) * 2009-12-04 2015-04-22 纳派泰克股份公司 在通过控制对队列填充程度进行更新来节省带宽的同时接收并存储数据的组件和方法
KR20110072023A (ko) * 2009-12-22 2011-06-29 삼성전자주식회사 휴대 단말기의 프로세서 간 데이터 통신 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5664200A (en) 1991-10-22 1997-09-02 Bull Hn Information Systems Inc. Apparatus and method for providing more effective reiterations of interrupt requests in a multiprocessor system
US20030235194A1 (en) 2002-06-04 2003-12-25 Mike Morrison Network processor with multiple multi-threaded packet-type specific engines
US7751401B2 (en) 2008-06-30 2010-07-06 Oracle America, Inc. Method and apparatus to provide virtual toe interface with fail-over

Also Published As

Publication number Publication date
CN104094558A (zh) 2014-10-08
GB2513809A (en) 2014-11-05
US20130223234A1 (en) 2013-08-29
GB2513809B (en) 2015-07-01
GB201415479D0 (en) 2014-10-15
US8934332B2 (en) 2015-01-13
DE112013001211T5 (de) 2014-11-13
CN104094558B (zh) 2017-03-08
WO2013128320A1 (en) 2013-09-06

Similar Documents

Publication Publication Date Title
DE112013001211B4 (de) Multithread-Paketverarbeitung
DE69533230T2 (de) Verfahren und vorrichtung zur verbesserung der fehlertoleranz eines netzwerkes
DE69433293T2 (de) Netzwerkübertragungsverfahren für Systeme mit virtuellem Speicher
DE19836347C2 (de) Fehlertolerantes Computersystem
EP0179936B1 (de) Verfahren und Einrichtung zur Steuerung einer Sammelleitung
DE3850097T2 (de) Rechnerverbinder für gruppen von datenverarbeitungseinrichtungen.
DE112013004750B4 (de) Verwaltung von Aushungern und Überlastung in einem zweidimensionalen Netz mit Flusskontrolle
DE102005014727B4 (de) Hardwarekoordination von Power Management-Aktivitäten
DE2847216C2 (de) Datenverarbeitungsanlage mit Mehrprogrammbetrieb
DE112010003594B4 (de) Vorrichtung, Verfahren und Computerprogramm zum Betreiben eines verteilten Gruppenspeichernetzes für Schreibvorgänge
DE69030037T2 (de) Verfahren zur Verkehrsregelung in einem Hochgeschwindigkeitsdatennetz
DE112011104471T5 (de) Verfahren zur Failover-Verwaltung von virtuellen Maschinen und System zum Unterstützen desselben
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
DE112011102415T5 (de) Registerzugriff in einer verteilten virtuellen Brückenumgebung
DE112016005477T5 (de) System zum parallelen puffern und vorverarbeiten von datenströmen auf grundlage eines kontextes auf mehreren ebenen in fahrzeugdomänen
DE112012004551B4 (de) Mehrkernverknüpfung in einem Netzprozessor
DE2912738A1 (de) System mit direkter uebertragung zwischen subsystemen
DE2740056A1 (de) Mulitprozessor-rechnersystem
EP0048767A1 (de) Prioritätsstufengesteuerte Unterbrechungseinrichtung
DE69332853T2 (de) Multiprozessorsystem und Kommunikationsverfahren zwischen Prozessoren
DE112017004907T5 (de) System, Vorrichtung und Verfahren zur Durchführung einer verteilten Arbitration
DE102012017339B4 (de) Rechnersystem
DE102020210335A1 (de) System und Verfahren zum Einreihen von Arbeit innerhalb eines virtualisierten Planers basierend auf einem Abrechnen innerhalb einer Einheit von Einträgen innerhalb der Einheit
DE112019000666T5 (de) Dynamische rekonfiguration einer softwarearchitektur für eine ccap (converged cable access platform)
DE102019105065A1 (de) Technologien zur gezielten flusssteuerungswiederherstellung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012700000

Ipc: H04L0045000000