DE112011106016T5 - Gemeinsame Sendeschlange - Google Patents

Gemeinsame Sendeschlange Download PDF

Info

Publication number
DE112011106016T5
DE112011106016T5 DE112011106016.5T DE112011106016T DE112011106016T5 DE 112011106016 T5 DE112011106016 T5 DE 112011106016T5 DE 112011106016 T DE112011106016 T DE 112011106016T DE 112011106016 T5 DE112011106016 T5 DE 112011106016T5
Authority
DE
Germany
Prior art keywords
communication channel
order
queue
history information
work queue
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.)
Withdrawn
Application number
DE112011106016.5T
Other languages
English (en)
Inventor
Vadim Makhervaks
Robert O. Sharp
Brian Hausauer
Kenneth G. Keels
Donald E. Wood
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE112011106016T5 publication Critical patent/DE112011106016T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

Im Allgemeinen betrifft diese Offenbarung eine gemeinsame Sendeschlange in einem vernetzten System. Ein Verfahren, eine Vorrichtung und ein System sind zum Unterstützen mehrerer zuverlässiger Kommunikationskanäle unter Verwendung einer gemeinsamen Sendeschlange konfiguriert. Die zuverlässigen Kommunikationskanäle sind zum Befördern von Nachrichten von einem Host zu mehreren Zielorten konfiguriert und zum Sicherstellen, dass sich eine fertiggestellte Reihenfolge von Nachrichten auf eine Sendereihenfolge bezieht.

Description

  • GEBIET
  • Die vorliegende Offenbarung betrifft eine gemeinsame Sendeschlange für vernetzte Systeme.
  • HINTERGRUND
  • In einem vernetzten System können ein oder mehrere Host(s) (z. B. Server) mit einer oder mehreren Zielvorrichtungen (z. B. Clients und/oder anderen Servern) über ein Netz kommunizieren. Regeln und Datenformate für die Kommunikation über das Netz sind typischerweise durch Kommunikationsprotokolle definiert. Beispiele für solche Protokolle enthalten Ethernet und Internet Protocol Suite (TCP/IP). Typischerweise verwalten Netzsteuerung(en) im Host (Quellenendpunkt) und eine Netzsteuerung in jeder Zielvorrichtung (Zielendpunkt) ein Senden und Empfangen von Nachrichten, einschließlich Steuerung und/oder Daten zwischen dem Host und den Zielvorrichtungen, über das Netz. Die Kommunikation kann verbindungslos sein oder kann eine zuverlässige Konnektivität (bestätigte fehlerfreie Sendung und ordnungsgemäße Lieferung) haben.
  • Eine zuverlässige Verbindung (Reliable Connection – RC) ist ein Transportmodus, der so konfiguriert ist, dass er eine zuverlässige Konnektivität zwischen einem Host und einer Zielvorrichtung bereitstellt. In einem herkömmlichen System wird eine RC typischerweise durch Zuteilen eines Schlangenpaares (QP) beim Host errichtet. In einigen Protokollen enthält das QP eine Hostschnittstelle (Sendeschlange) und eine Einheit, die zum Bereitstellen eines zuverlässigen Dienstes für das QP über das Netz unter Verwendung eines Zuverlässigkeitsprotokolls konfiguriert ist. Zum Beispiel enthält der InfiniBand-Standard ein Zuverlässigkeitsprotokoll. In einem anderen Beispiel ist iWARP zur Verwendung von TCP zur Bereitstellung eines Zuverlässigkeitsdienstes konfiguriert. Ein zuverlässiger Dient ist zum Bereitstellen einer fehlerfreien Übertragung und ordnungsgemäßen Lieferung von Nachrichten zwischen dem Host und dem Zielort konfiguriert.
  • Ein zuverlässiger Dienst enthält Funktionen, die sowohl vom Host wie auch von Zielvorrichtungen ausgeführt werden, die so konfiguriert sind, dass sie zu einer fehlerfreien Übertragung und ordnungsgemäßen Lieferung von Nachrichten vom Host zu einer Zielvorrichtung führen. Der Host ist zum Senden von Nachrichten in der Reihenfolge, in der sie der Sendeschlange zugleitet wurden, zum Identifizieren und erneuten Senden von Nachrichten und/oder Paketen, die am Zielendpunkt nicht erfolgreich empfangen wurden, und zum Fertigstellen von Nachrichten, die vom Zielort empfangsbestätigt wurden, in der Reihenfolge konfiguriert. Der Zielendpunkt ist zum Validieren und Verarbeiten empfangener Nachrichten und/oder Pakete, zum Bereitstellen einer Anzeige für den Host bezüglich empfangener und verarbeiteter Nachrichten und zum Liefern empfangener Nachrichten und/oder Pakete in der Reihenfolge (Lieferungsreihenfolge entsprechend der Sendereihenfolge) konfiguriert.
  • In einigen Situationen kann es für eine Anwendung, die auf einem Hostprozessor läuft, wünschenswert sein, mit mehreren Zielvorrichtungen zu kommunizieren. In einer typischen zuverlässigen Verbindungskonfiguration wären eine oder mehrere zweckbestimmte QPs im Host zugeteilt und eine zuverlässige Verbindung für jede Zielvorrichtung errichtet. Eine vermittelnde Software kann Nachrichten zwischen den mehreren zuverlässigen Verbindungen (und verknüpften Zielvorrichtungen) multiplexen. Ein solches Multiplexing durch Software kann einen zusätzlichen Aufwand zur Kommunikationsverarbeitung signifikant erhöhen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Merkmale und Vorteile des beanspruchten Gegenstands werden aus der folgenden ausführlichen Beschreibung von entsprechenden Ausführungsformen offensichtlich, wobei die Beschreibung unter Bezugnahme auf die beiliegenden Zeichnungen betrachtet werden sollte, von welchen:
  • 1 eine beispielhafte Systemausführungsform entsprechend der vorliegenden Offenbarung zeigt;
  • 2 ein Beispiel eines Kommunikationsteilsystems zeigt, das eine gemeinsame Sendeschlange entsprechend der vorliegenden Offenbarung enthält;
  • 3A und 3B zwei beispielhafte Ausführungsformen von Kommunikationsvorrichtungen zeigt, die zum Verwalten einer gemeinsamen Sendeschlange konfiguriert sind, die zum Senden mehrerer Nachrichten zu mehreren Zielorten über mehrere zuverlässige Kommunikationskanäle entsprechend der vorliegenden Offenbarung verwendet wird;
  • 4A und 4B beispielhafte Ablaufdiagramme sind, die eine Operation eines Hostsystems und einer Kommunikationsvorrichtung zum Senden mehrerer Nachrichten zu mehreren Zielvorrichtungen über mehrere zuverlässige Kommunikationskanäle unter Verwendung einer gemeinsamen Sendeschlange und Bewahrung der Sendereihenfolge für die gemeinsame Sendeschlange zeigen;
  • 5A und 5B weitere beispielhaftere Ablaufdiagramme sind, die Operationen eines Hostsystems und einer Kommunikationsvorrichtung zum Senden mehrerer Nachrichten zu mehreren Zielortvorrichtungen über mehrere zuverlässige Kommunikationskanäle unter Verwendung einer gemeinsamen Sendeschlange und Bewahrung der Sendereihenfolge für jeden zuverlässigen Kommunikationskanal zeigen;
  • 6 ein Beispiel ist, das Eingaben in einer gemeinsamen Sendeschlange und Eingaben in Sendeverlaufsinformationsspeichern für die gemeinsame Sendeschlange für mehrere zuverlässige Kommunikationskanäle für die in 3A dargestellte Ausführungsform entsprechend der vorliegenden Offenbarung zeigt; und
  • 7 ein Beispiel ist, das Eingaben in einer gemeinsamen Sendeschlange und Eingaben in Sendeverlaufsinformationsspeichern für die gemeinsame Sendeschlange für mehrere zuverlässige Kommunikationskanäle für die in 3B dargestellte Ausführungsform entsprechend der vorliegenden Offenbarung zeigt.
  • Obwohl die folgende ausführliche Beschreibung unter Bezugnahme auf veranschaulichende Ausführungsformen erfolgt, sine viele Alternativen, Modifizierungen und Variationen davon für einen Fachmann offensichtlich.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Allgemein betrifft diese Offenbarung eine gemeinsame Sendeschlange in einem vernetzten System. Ein Verfahren und ein System sind zur Unterstützung mehrerer zuverlässiger Kommunikationskanäle unter Verwendung der gemeinsamen Sendeschlange konfiguriert. Die gemeinsame Sendeschlange ist so konfiguriert, dass eine Anwendung über mehrere zuverlässige Kommunikationskanäle mit mehreren fernen Zielorten kommunizieren kann. Anders als bei einer Sendeschlange pro zuverlässigem Kommunikationskanal ist die gemeinsame Sendeschlange von den zuverlässigen Kommunikationskanälen „abgekoppelt”. Eine Kommunikationsvorrichtung, wie eine Netzsteuerung, ist zum Verwalten der Kommunikation über die mehreren zuverlässigen Kommunikationskanäle konfiguriert.
  • Das Verfahren und System sind so konfiguriert, dass sie eine Verknüpfung einer ersten Vielzahl unerledigter Nachrichten mit einer gemeinsamen Sendeschlange zu einem Zeitpunkt ermöglichen. Das Verfahren und System sind ferner so konfiguriert, dass sie eine Zuordnung einer zweiten Vielzahl unerledigter Nachrichten zu einem zuverlässigen Kommunikationskanal zu einem Zeitpunkt ermöglichen. Dies ist anders als bei einigen herkömmlichen Systemen, die eine Sendeschlange und einen Kommunikationskanal zu einem Zeitpunkt auf eine unerledigte Nachricht beschränken. Unerledigte Nachricht, wie hierin verwendet, entspricht einer Nachricht, die gesendet, aber noch nicht fertiggestellt wurde. In einer Ausführungsform entspricht eine Fertigstellungsreihenfolge von Arbeitsschlangenelementen, die zur gemeinsamen Sendeschlange geleitet wurden, der Sendereihenfolge der Nachrichten, die den Arbeitsschlangenelementen für die gemeinsame Sendeschlange entsprechen. In einer anderen Ausführungsform entspricht die Fertigstellungsreihenfolge von Arbeitsschlangenelementen, die zur gemeinsamen Sendeschlange geleitet wurden, der Sendereihenfolge der Nachrichten auf einer Basis pro zuverlässigem Kommunikationskanal (d. h., unabhängig von anderen zuverlässigen Kommunikationskanälen). In beiden Ausführungsformen bezieht sich die Sendereihenfolge auf die Zuleitungsreihenfolge von Arbeitsschlangenelementen in die gemeinsame Sendeschlange, wie hierin beschrieben.
  • Wie hierin verwendet, ist ein zuverlässiger Kommunikationskanal ein Dienst (der zum Beispiel von einer Netzsteuerung bereitgestellt wird), der zum Bereitstellen einer zuverlässigen Ende-zu-Ende-Konnektivität zwischen zwei Endpunkten konfiguriert ist, einschließlich einer fehlerfreien Übertragung von Daten zwischen den Endpunkten und einer Lieferung in Reihenfolge der Daten am Zielendpunkt. Die zuverlässigen Kommunikationskanäle sind zur Übertragung von Nachrichten von einem Host (Quellenendpunkt) zu mehreren Zielorten (Zielendpunkten) konfiguriert, wo jeder zuverlässige Kommunikationskanal zum Bereitstellen eines zuverlässigen Dienstes zwischen einem Paar von Endpunkten konfiguriert ist. Die zuverlässigen Kommunikationskanäle sind zur Sicherstellung konfiguriert, dass die Fertigstellungsreihenfolge von Nachrichten einer Sendereihenfolge entspricht. „Fertigstellung”, wie hierin verwendet, bedeutet, dass alle Nachrichtendaten zuverlässig zum Zielendpunkt übertragen wurden und ihr Empfang bestätigt wurde (z. B. durch eine Bestätigung).
  • In einem herkömmlichen System (d. h., eine einzige Sendeschlange pro Verbindung) ist ein zugeteiltes QP für eine verknüpfte zuverlässige Verbindung zwischen zwei Endpunkten vorgesehen. Wenn eine Arbeitsschlangenanfrage an eine spezifische Sendeschlange gestellt wird, entspricht dies einem Transport von Nachrichten unter Verwendung der verknüpften zuverlässigen Verbindung. In einem Verfahren und System entsprechend der vorliegenden Offenbarung ist die gemeinsame Sendeschlange zur Verwendung mit mehreren zuverlässigen Kommunikationskanälen zwischen einem Host (Quellenendpunkt) und mehreren Zielendpunkten konfiguriert. Ein Arbeitsschlangenelement entsprechend der vorliegenden Offenbarung kann einen Deskriptor enthalten, der zum Identifizieren eines zuverlässigen Kommunikationskanals verwendet wird, der zum Transportieren einer verknüpften Nachricht verwendet wird.
  • Wenn eine Anwendung Daten zu übertragen hat, kann die Anwendung eine Arbeitsanfrage stellen. Die Arbeitsanfrage kann in ein Arbeitsschlangenelement (WQE) übertragen werden, das in eine Sendeschlange gestellt wird (d. h., eine Arbeitsschlange, die zum Vorlegen von zu sendender „Arbeit” verwendet wird). Die Reihenfolge von WQEs in einer Sendeschlange entspricht typischerweise der Reihenfolge, in der die WQEs der Sendeschlange vorgelegt wurden, und der Reihenfolge, in der die verknüpften Nachrichten gesendet werden können.
  • Jedes WQE enthält typischerweise Steuerinformationen, die die zu sendende Nachricht beschreiben, und einen Deskriptor (Datendeskriptor), der zu sendende Daten (Nachrichtennutzlast) und ihren verknüpften Anwendungszwischenspeicher identifiziert. In einer herkömmlichen Sendeschlange ist jede Sendeschlange mit einer jeweiligen zuverlässigen Verbindung verknüpft, die zum Bereitstellen eines zuverlässigen Dienstes konfiguriert ist, so dass eine spezifische zuverlässige Verbindung im WQE nicht identifiziert werden kann. Eine gemeinsame Sendeschlange entsprechend der vorliegenden Offenbarung kann mit mehreren zuverlässigen Kommunikationskanälen verknüpft sein. Somit kann ein WQE, das zu einer gemeinsamen Sendeschlange geleitet wird, einen Deskriptor (zuverlässigen Kommunikationskanaldeskriptor) enthalten, der zum Verknüpfen des WQE mit einem zuverlässigen Kommunikationskanal konfiguriert ist, der zum Senden der identifizierten Nachricht (einschließlich der Nutzlast) verwendet werden sollte.
  • Das Zuleiten eines WQE ist so konfiguriert, dass eine Kommunikationsvorrichtung über die zu sendende Nachricht (und Daten) benachrichtigt wird. Die Kommunikationsvorrichtung ist entsprechend der vorliegenden Offenbarung zum Lesen des WQE konfiguriert, das zur gemeinsamen Sendeschlange geleitet wurde, und zum Verwenden der Steuerinformationen, Datendeskriptor(en) und des zuverlässigen Kommunikationskanaldeskriptors, um eine Protokollnachricht zu generieren. Nachrichten können nach Art, Steuerinformationen und Nutzlast variieren. Kommunikationsprotokolle können eine Paketgröße (maximale Paketgröße) einschränken, die gesendet werden kann. Wenn eine Nachrichtengröße die maximale Paketgröße übersteigt, kann die Nachricht in mehrere Pakete zur Sendung segmentiert werden. Die Vielzahl von Paketen kann dann am Zielort wieder zur ursprünglichen Nachricht zusammengesetzt werden. Ein WQE, das zur gemeinsamen Sendeschlange geleitet wird, kann fertiggestellt werden, sobald eine gesamte verknüpfte Nachricht erfolgreich gesendet wurde und der Empfang der Nachricht von Zielort bestätigt wurde.
  • Die Kommunikationsvorrichtung ist zum Verwalten der Kommunikation von Fertigstellungen zur Anwendung in der Sendereihenfolge der Nachricht konfiguriert. Auf diese Weise kann ein übermäßiger Aufwand, der mit einem Betriebssystem verbunden ist, das die Kommunikation zwischen einer Anwendung und den mehreren Zielorten über die mehreren zuverlässigen Kommunikationskanäle verwaltet, vermieden werden. Somit kann auch ein Geschwindigkeitsmanko, das mit Software verbunden ist, vermieden werden. Vorteilhaft kann eine Begleitvorrichtung wie eine Speichersteuerung dann mit den mehreren Zielorten über die mehreren zuverlässigen Kommunikationskanäle durch eine Kommunikationsvorrichtung entsprechend der vorliegenden Offenbarung kommunizieren, ohne mehrere Sendeschlangen zu benötigen (d. h., ohne eine Sendeschlange für jeden zuverlässigen Kommunikationskanal zu benötigen). Somit können Begleitvorrichtungen mit begrenzter Schlangenspeicherkapazität mit einer Anzahl von Zielorten kommunizieren, wo die Anzahl zweckbestimmter Sendeschlangen die Schlangenspeicherkapazität der Begleitvorrichtung übersteigen würde.
  • 1 zeigt eine beispielhafte Systemausführungsform entsprechend der vorliegenden Offenbarung. System 100 enthält allgemein ein Hostsystem 102, ein Netz 116, mehrere Speichervorrichtungen 118A, 118B, ..., 118N und mehrere Zielvorrichtungen 120A, 120B, ..., 120N. Jede Zielvorrichtung 120A, 120B, ..., 120N kann eine entsprechende Netzsteuerung 130A, 130B, ..., 130N enthalten, die zum Bereitstellen eines Zugriffs des Netzes 116 auf die Zielvorrichtung 120A, 120B, ..., 120N konfiguriert ist. Zum Beispiel kann das Hostsystem 102 zum Empfangen einer oder mehrerer Anfrage(n) von einer oder mehreren Zielvorrichtung(en) 120A, 120B, ..., 120N für einen Zugriff auf Daten, die in einer oder mehreren Speichervorrichtung(en) 118A, 118B, ..., 118N gespeichert sind, konfiguriert sein. Das Hostsystem 102 kann dann zum Bereitstellen der angefragten Daten für die eine oder mehreren Zielvorrichtung(en) 120A, 120B, ..., 120N über das Netz 116 konfiguriert sein.
  • Das Hostsystem 102 enthält allgemeinen einen Hostprozessor, eine Host CPU 104, einen Systemspeicher 106, einen Brücken-Chipsatz 108, eine Netzsteuerung 110 und eine Speichersteuerung 114. Die Host CPU 104 ist an den Systemspeicher 106 und den Brücken-Chipsatz 108 gekoppelt. In einigen Ausführungsformen kann der Brücken-Chipsatz im Host CPU 104 enthalten sein. Der Brücken-Chipsatz 108 ist an den Systemspeicher 106, die Netzsteuerung 110 und die Speichersteuerung 114 gekoppelt. Die Speichersteuerung 114 ist über den Brücken-Chipsatz 108 an die Netzsteuerung 110 gekoppelt. Der Brücken-Chipsatz 108 kann eine Peer-zu-Peer-Konnektivität zwischen der Speichersteuerung 114 und der Netzsteuerung 110 bereitstellen. In einigen Ausführungsformen können die Netzsteuerung 110 und die Speichersteuerung 114 integriert sein. Die Netzsteuerung 110 ist zum Bereitstellen einer Netzkonnektivität beim Hostsystem 102 konfiguriert.
  • Die Netzsteuerung 110 ist zum Verwalten des Sendens und Empfangens von Nachrichten zwischen dem Host 102 und Zielvorrichtungen 120A, 120B, ..., 120N (über eine SSQ Managementmaschine 112) konfiguriert. Die Netzsteuerung 110 kann zum Bereitstellen zuverlässiger Kommunikationskanäle zwischen dem Host 102 und den Zielvorrichtungen 120A, 120B, 120N konfiguriert sein. Die Netzsteuerung 110 kann zum Implementieren des zuverlässigen Dienstes konfiguriert sein. Beispiele für Kommunikationsprotokolle, die zum Bereitstellen des zuverlässigen Dienstes konfiguriert sind, enthalten, ohne aber darauf beschränkt zu sein, ein zuverlässiges Infiniband-Verbindungsprotokoll, iWARP-(Internet Wide Area RDMA (Remote direct memory access)Protokoll) Protokoll oder ein TOE-(TCP offload engine)Protokoll. Diese Protokolle sind zum Bereitstellen eines zuverlässigen Dienstes bei der Netzsteuerung konfiguriert, die zum Bereitstellen von Transportschichtdiensten, wie zuverlässige Paketlieferung und Nachrichtenfertigstellung, in Reihenfolge konfiguriert ist. Eine zuverlässige Paketlieferung enthält ein erneutes Senden verlorener oder korrupter Pakete und Signalisieren eines Fehlers, wenn eine Anzahl von wiederholten Versuchen erfolglos ist.
  • Durch Verwendung dieser Protokolle ist die Netzsteuerung 110 zum Verwalten zuverlässiger Kommunikationskanäle ohne Eingreifen eines Host-OS (Betriebssystem) und ohne mehrmaliges Kopieren gesendeter (und empfangener) Daten konfiguriert, während sichergestellt wird, dass Fertigstellungen zu einer sendenden Anwendung in Reihenfolge kommuniziert werden. Mit anderen Worten, durch Verwendung dieser Protokolle werden CPU-Zusatzaufwand, Speicherbandbreitennutzung und Latenz verringert, indem die Transportschichtverarbeitung von der CPU abgeladen, unnötige Zwischenspeicherung vermieden und OS-Aufrufe und Kontextwechsel verringert werden. Ferner erfordert eine Implementierung einer gemeinsamen Sendeschlange entsprechend der vorliegenden Offenbarung keine Wechsel zu einer physikalischen Schicht, wodurch die Kommunikation mit jeder, einem Standardprotokoll entsprechenden Kommunikationsvorrichtung erleichtert wird.
  • Der Systemspeicher 106 ist zum Speichern eines Betriebssystems OS 105, einer Anwendung 107 und eines oder mehrerer Anwendungsdatenzwischenspeicher(s) konfiguriert. Der Systemspeicher 106 ist zum Speichern einer gemeinsamen Sendeschlange (SSQ) 122, wie hierin beschrieben, konfiguriert. Der Systemspeicher kann zum Speichern einer gemeinsamen Empfangsschlange (SRQ) 124 konfiguriert sein. In einer Ausführungsform kann die Netzsteuerung 110 zum Speichern der gemeinsamen Sendeschlange 122 und/oder der gemeinsamen Empfangsschlange 124 konfiguriert sein. In einer anderen Ausführungsform kann die Speichersteuerung 114 zum Speichern der gemeinsamen Sendeschlange 122 und/oder der gemeinsamen Empfangsschlange 124 konfiguriert sein. In einigen Ausführungsformen kann die Speichersteuerung 114 mit der Netzsteuerung 110 integriert sein. Die gemeinsame Sendeschlange 122 (und gemeinsame Empfangsschlange 124) kann mit mehreren zuverlässigen Kommunikationskanälen, wie hierin beschrieben, verwendet werden. Die gemeinsame Sendeschlange 122 kann von einer SSQ Managementmaschine 112 verwaltet werden. Die SSQ Managementmaschine 112 kann in der Netzsteuerung 110 enthalten sein. Die gemeinsame Empfangsschlange 124 kann von der SSQ Managementmaschine 112 oder einer ähnlichen SRQ Managementmaschine verwaltet werden.
  • Die Speichersteuerung 114 ist an eine oder mehrere Speichervorrichtungen 118A, 118B, ..., 118N gekoppelt. Die Speichersteuerung 114 ist zum Speichern und Abfragen von Daten in/aus der (den) Speichervorrichtung(en) 118A, 118B, ..., 118N konfiguriert. Die Daten können als Reaktion auf eine Anfrage von Zielvorrichtung(en) 120A, 120B, ..., 120N und/oder einer Anwendung, die auf der Host CPU 104 läuft, gespeichert/abgefragt werden.
  • 2 zeigt ein Beispiel eines Kommunikationsteilsystems 200 entsprechend der vorliegenden Offenbarung. Das Kommunikationsteilsystem 200 enthält die gemeinsame Sendeschlange 122 und die gemeinsame Empfangsschlange 124 von 1, eine Begleitvorrichtung 202, eine Kommunikationsvorrichtung 204, mehrere zuverlässige Sendekommunikationskanäle 206, mehrere Empfangskommunikationskanäle 208, ein Netz 210 und mehrere Zielvorrichtungen 212A, 212B, ..., 212N. Die Kommunikationsvorrichtung 204 enthält eine SSQ Managementmaschine 214. Es sollte festgehalten werden, dass die Pfeile in 2 die Richtung einer Daten-(Nachrichten-)Sendung angeben. Bestätigungen und dergleichen können auf demselben zuverlässigen Kommunikationskanal in entgegengesetzter Richtung gesendet werden. Somit können die zuverlässigen Sendekommunikationskanäle 206 und die Empfangskommunikationskanäle 208 zweiseitig gerichtet sein. Zum Beispiel kann die Begleitvorrichtung 202 eine Speichersteuerung sein und die Kommunikationsvorrichtung 204 kann, wie hierin beschrieben, eine Netzsteuerung sein. In Fortsetzung dieses Beispiels kann die SSQ 122 zur Kopplung der Speichersteuerung 202 an mehrere Zielvorrichtungen 212A, 212B, ..., 212N über mehrere zuverlässige Kommunikationskanäle 206 verwendet werden. Nachrichten (die Daten enthalten können) können dann von einer oder mehreren Speichervorrichtung(en) zu den Zielvorrichtungen 212A, 212B, ..., 212N über die mehreren zuverlässigen Kommunikationskanäle 206 gesendet werden, ohne mehrere Sendeschlangen zu benötigen. Die SSQ Managementmaschine 214 ist zum Verwalten der gemeinsamen Sendeschlange 122 konfiguriert, so dass Nachrichtenfertigstellungen, wie hierin beschrieben, in einer Reihenfolge bereitgestellt werden, die der Reihenfolge einer Nachrichtensendung entspricht. Die SSQ Managementmaschine 214 kann zum Verwalten der gemeinsamen Empfangsschlange 124 konfiguriert sein.
  • Vorteilhaft begrenzt eine Implementierung einer gemeinsamen Sendeschlange entsprechend der vorliegenden Offenbarung weder eine Anzahl von unerledigten Nachrichten für einen zuverlässigen Kommunikationskanal (zu einem Zeitpunkt), die Nachrichtengröße noch die durchgeführte Operation. Zusätzlich oder alternativ kann die Anzahl unerledigter Nachrichten (zu einem Zeitpunkt) für eine gemeinsame Sendeschlange nur durch die Kapazität der gemeinsamen Sendeschlange begrenzt sein. Zum Beispiel kann eine erste Vielzahl von unerledigten Nachrichten mit der gemeinsamen Sendeschlange verknüpft sein. In einem anderen Beispiel kann eine zweite Vielzahl von unerledigten Nachrichten mit einem zuverlässigen Kommunikationskanal verknüpft sein. Dies ist anders als bei einigen herkömmlichen Systemen, die eine Sendeschlange und einen Kommunikationskanal auf eine unerledigte Nachricht begrenzen. Zum Beispiel können bei einem iWARP RDMA (Remote Direct Memory Access), alle Operationen, die durch den iWARP-Standard definiert sind, unter Verwendung einer gemeinsamen Sendeschlange entsprechend der vorliegenden Offenbarung durchgeführt werden. Durch Verwendung der gemeinsamen Sendeschlange und gemeinsamen Empfangsschlange kann eine Anzahl von Zielvorrichtungen eine Anzahl von Schnittstellenschlangen einer Begleitvorrichtung (z. B. Speichersteuerung) übersteigen, ohne einen Eingriff eines Host OS (Software) zu benötigen. Zum Beispiel kann für eine Speichersteuerungs-Begleitvorrichtung die gemeinsame Empfangsschlange für eine Netzsteuerung auf eine Einreichungsschlange der Speichersteuerung abgebildet werden und eine Fertigstellungsschlange der Speichersteuerung kann auf eine gemeinsame Sendeschlange der Netzsteuerung abgebildet werden. Somit können sich mehrere Zielvorrichtungen die Einreichungsschlangen und Fertigstellungsschlangen der Speichersteuerung teilen, während zweckbestimmte zuverlässige Kommunikationskanäle verwendet werden. Dies ermöglicht eine Freistellung der Speichersteuerung für örtliche und ferne Zielorte, ohne eine Unterstützung für eine relativ große Anzahl von Einreichungsschlangen und Fertigstellungsschlangen durch die Speichersteuerung zu benötigen.
  • 3A und 3B zeigen zwei beispielhafte Ausführungsformen 302, 304 von Kommunikationsvorrichtungen (z. B., Netzsteuerung 110), die zum Verwalten einer gemeinsamen Sendeschlange konfiguriert sind, die von einer Anwendung zum Senden von Nachrichten über mehrere zuverlässige Kommunikationskanäle entsprechend der vorliegenden Offenbarung verwendet wird. Die Kommunikationsvorrichtungen 302, 304 enthalten mehrere Kanal-Sendeverlaufsinformationsspeicher (Xmit FIFOs) 312A, 312B, ..., 312M, wobei jeder Kanal-Sendeverlaufsinformationsspeicher mit einem entsprechenden zuverlässigen Kommunikationskanal RC1, RC2, ..., RCm verknüpft ist. Zum Beispiel ist RC1 Xmit FIFO mit dem zuverlässigen Kommunikationskanal RC1 verknüpft, RC2 Xmit FIFO ist mit dem zuverlässigen Kommunikationskanal RC2 verknüpft, usw. Jeder zuverlässige Kommunikationskanal RC1, RC2, ..., RCm ist mit einem entsprechenden Zielort verknüpft. Jeder zuverlässige Kommunikationskanal RC1, RC2, RCm entspricht einem zuverlässigen Kommunikationskanal, der zwischen dem Host und einer entsprechenden Zielvorrichtung errichtet wurde. Jeder Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M ist so konfiguriert, dass er sicherstellt, dass eine Nachricht, die über einen entsprechenden zuverlässigen Kommunikationskanal RC1, RC2, ..., RCm gesendet wird, für diesen zuverlässigen Kommunikationskanal in der Reihenfolge fertiggestellt wird.
  • Jeder Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M ist zum Nachverfolgen von Nachrichten konfiguriert, die auf dem verknüpften zuverlässigen Kommunikationskanal gesendet wurden, aber noch nicht fertiggestellt sind. Die Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M sind zum Speichern von Nachverfolgungsinformationen konfiguriert, die zum Fertigstellen oder erneuten Senden unerledigter Nachrichten verwendet werden. Zum Beispiel ist RC1 Xmit FIFO 312A zum Nachverfolgen von Nachrichten konfiguriert, die auf dem zuverlässigen Kommunikationskanal RC1 gesendet werden, RC2 Xmit FIFO 312B zum Nachverfolgen von Nachrichten konfiguriert, die auf dem zuverlässigen Kommunikationskanal RC2 gesendet werden, usw. Jeder Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M ist ferner so konfiguriert, dass er sicherstellt, dass Nachrichten in einer Reihenfolge entsprechend der Reihenfolge fertiggestellt werden, in der sie auf dem zugeordneten zuverlässigen Kommunikationskanal gesendet werden. Zum Beispiel ist RC1 Xmit FIFO 312A konfiguriert um sicherzustellen, dass Nachrichten, die auf dem zuverlässigen Kommunikationskanal RC1 gesendet wurden, in einer Reihenfolge entsprechend der Reihenfolge fertiggestellt werden, in der sie gesendet wurden.
  • Unter Bezugnahme nun auf 3A enthält die Kommunikationsvorrichtung 302 in dieser Ausführungsform ferner einen SSQ Verlaufsinformationsspeicher (SSQ Xmit FIFO) 314. Der SSQ Xmit FIFO 314 ist zwischen dem Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M und einem gemeinsame Sendeschlange SSQ 316 gekoppelt. Jeder Eintrag in jedem Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M kann mit einem entsprechenden Eintrag im SSQ Verlaufsinformationsspeicher 314 verknüpft werden. Der SSQ Verlaufsinformationsspeicher 314 ist so konfiguriert, dass er sicherstellt, dass Nachrichten, die über die mehreren zuverlässigen Kommunikationskanäle RC1, RC2 und RCm gesendet werden, in der Reihenfolge fertiggestellt werden, in der sie zur gemeinsamen Sendeschlange 316 geleitet wurden.
  • Die Fertigstellung einer Nachricht entsprechend einem entsprechenden Eintrag im Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ... oder 312M muss nicht unbedingt zur Fertigstellung des verknüpften Eintrags im SSQ Verlaufsinformationsspeicher 314 führen. Zum Beispiel können Eingaben im Kanal-Sendeverlaufsinformationsspeicher für einen zuverlässigen Kommunikationskanal außerhalb der Reihenfolge in Bezug auf Eingaben im Kanal-Sendeverlaufsinformationsspeicher für andere zuverlässige Kommunikationskanäle fertiggestellt werden. In dieser Ausführungsform sind Eingaben im SSQ Verlaufsinformationsspeicher so konfiguriert, dass sie in Reihenfolge fertiggestellt werden. Mit anderen Worten, ein Eintrag im SSQ Verlaufsinformationsspeicher kann nur fertiggestellt werden, wenn die (in der Zuleitungs- und/oder Sendereihenfolge) vorangehenden Eingaben im SSQ Verlaufsinformationsspeicher fertiggestellt sind. Damit eine Fertigstellungsreihenfolge erreicht wird, die der Zuleitungsreihenfolge für Eingaben im SSQ 316 entspricht, kann ein Eintrag im SSQ Verlaufsinformationsspeicher mit PendingCompletion („Vor Fertigstellung”) markiert werden, wenn sein verknüpfter Eintrag im Kanal-Sendeverlaufsinformationsspeicher fertiggestellt ist. Zum Beispiel kann die Markierung ein Setzen eines PendingCompletion-Bits im verknüpften Eintrag im SSQ Verlaufsinformationsspeicher enthalten. Die Kommunikationsvorrichtung 302 kann zum Überwachen der PendingCompletion-Bits für jeden Eintrag im SSQ Verlaufsinformationsspeicher und zum tatsächlichen Fertigstellen der mit PendingCompletion markierten Eingaben im SSQ Verlaufsinformationsspeicher in einer Fertigstellungsreihenfolge, die einer Zuleitungsreihenfolge des Arbeitsschlangenelements in der gemeinsamen Sendeschlange 316 entspricht, konfiguriert sein. In dieser Konfiguration kann eine Anzahl unerledigter Nachrichten (d. h., die auf eine Fertigstellung warten) für jeden zuverlässigen Kommunikationskanal durch eine Kapazität des SSQ 316, eine maximale Größe des SSQ Verlaufsinformationsspeichers 314 oder eine maximale Größe eines verknüpften Kanal-Sendeverlaufsinformationsspeichers 312A, 312B, ..., 312M begrenzt sein. Somit können die Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M und der SSQ Verlaufsinformationsspeicher 314 mit der gemeinsamen Sendeschlange SSQ 316 zur Sicherstellung verwendet werden, dass eine Fertigstellung von gesendeten Nachrichten der sendenden Anwendung in der Reihenfolge kommuniziert wird, in der sie zur gemeinsamen Sendeschlange 316 geleitet wurden.
  • Unter Bezugnahme nun auf 3B können in dieser Ausführungsform die mehreren Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M an die gemeinsame Sendeschlange 316 gekoppelt werden. Die Kommunikationsvorrichtung 304 kann mehrere Speicher für unerledigte WQE 320A, 320B, ..., 320M enthalten, wobei mit jedem Speicher für unerledigte WQE ein entsprechender Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M verknüpft ist. Die Speicher für unerledigte WQE 320A, 320B, ..., 320M sind Strukturen, die zum Speichern von Informationen konfiguriert sind, die sich auf WQEs beziehen, die zur SSQ 316 geleitet wurden. Zum Beispiel können die Informationen, die sich auf das WQE beziehen, das gesamte WQE, einen Teil des WQE, andere Informationen, die dem WQE bereitgestellt werden und/oder Informationen, die dem WQE entsprechen, enthalten. Die Speicher für unerledigte WQE 320A, 320B, ..., 320M können Erweiterungen der Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M sein. Jeder Speicher für unerledigte WQE 320A, 320B, ..., oder 320M kann als Teil eines verknüpften Sendeverlaufsinformationsspeichers 312A, 312B, ..., bzw. 312M, verwaltet werden oder kann separat verwaltet werden. Die Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M und Speicher für unerledigte WQE 320A, 320B, ..., 320M sind zum Bereitstellen einer Nachrichtenfertigstellung in Reihenfolge auf einer Basis pro zuverlässigen Kommunikationskanal konfiguriert. Mit anderen Worten, die Fertigstellungsreihenfolge von WQEs, die zur SSQ 316 geleitet werden, kann für Nachrichten aufrechterhalten werden, die auf einem entsprechenden zuverlässigen Kommunikationskanal RC1, RC2, ... oder RCM gesendet werden. WQEs, die mit dem entsprechenden zuverlässigen Kommunikationskanal verknüpft sind, können unabhängig davon fertiggestellt werden, ob WQEs, die mit Nachrichten verknüpft sind, die auf anderen zuverlässigen Kommunikationskanäle gesendet wurden, fertiggestellt sind. Die Speicher für unerledigte WQE 320A, 320B, ..., 320M sind so konfiguriert, dass sie ermöglichen, dass verknüpfte WQEs im SSQ 316, die anderen Nachrichten entsprechen, die vor einer entsprechenden Nachricht gesendet wurden, aber noch nicht fertiggestellt sind, freigegeben werden, wenn die entsprechende Nachricht fertiggestellt ist, wodurch Raum im SSQ 316 frei wird, so dass neue Arbeitsanfragen gestellt werden können.
  • In dieser Ausführungsform kann mindestens ein Teil jedes WQE zum entsprechenden Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M (oder Speicher für unerledigte WQE 320A, 320B, ..., 320M, auf den der entsprechende Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M verweist) kopiert werden, mit dem der zuverlässige Kommunikationskanal verknüpft ist, der zum Senden der Nachricht entsprechend dem WQE verwendet wird. Diese Kopie des mindestens einen Teils des WQE ist so konfiguriert, dass eine erneute Sendung von negativ bestätigten oder unbestätigten und abgelaufenen Paketen (und Nachrichten) möglich ist. Diese Kopie des WQE ist ferner so konfiguriert, dass eine Freigabe in Reihenfolge und/oder Fertigstellungen von WQEs außerhalb der Reihenfolge, die an den SSQ geleitet werden, möglich sind.
  • Die SSQ ist so konfiguriert, dass eine Anwendung mehrere Nachrichten zu einer Vielzahl von Zielendpunkten unter Verwendung des SSQ (und nicht mehrerer zweckbestimmter Sendeschlangen) senden kann. Die SSQ ist ferner so konfiguriert, dass mehrere unerledigte Nachrichten (zu jedem Zeitpunkt) möglich sind. In einigen Situationen kann die Anwendung so konfiguriert sein, dass die WQEs, die zur SSQ geleitet werden, in Sendereihenfolge für alle der zuverlässigen Kommunikationskanäle (und Zielendpunkte), mit welchen die geleiteten WQEs verknüpft sind, fertiggestellt werden. In anderen Situationen kann die Anwendung so konfiguriert sein, dass die Fertigstellungsreihenfolge zwischen einzelnen Zielendpunkten nicht wichtig ist. In diesen anderen Situationen kann es wünschenswert sein, die WQEs außerhalb der Reihenfolge in Bezug auf verschiedene Zielorte fertigzustellen, während eine Fertigstellung in Reihenfolge in Bezug auf einen individuellen Zielort beibehalten wird. Wenn WQEs, die zur SSQ geleitet werden, außerhalb der Reihenfolge in Bezug auf verschiedene Zielorte (und ihre verknüpften zuverlässigen Kommunikationskanäle) fertiggestellt werden können, kann dies die Abhängigkeit zwischen Zielorten verringern.
  • Zum Beispiel kann eine erste Nachricht mit einem verknüpften ersten Zielort und einem verknüpften ersten WQE, die zur SSQ geleitet wird, vor einer zweiten Nachricht mit einem verknüpften zweiten Zielort und einem verknüpften zweiten WQE, die zur SSQ geleitet wird, vom ersten Zielort empfangen, verarbeitet und bestätigt werden, nachdem die zweite Nachricht vom zweiten Zielort empfangen, verarbeitet und bestätigt wurde. Wird die Fertigstellungsreihenfolge entsprechend der Sendereihenfolge für die gesamte SSQ erzwungen, könnte das zweite WQE nicht vor der Fertigstellung des ersten WQE fertiggestellt werden, wodurch eine Verzögerung in der Fertigstellung der zweiten Nachricht abhängig von der Leistung des ersten Zielorts und ersten zuverlässigen Kommunikationskanals eingeführt wird. Wenn die Fertigstellungsreihenfolge entsprechend der Sendereihenfolge nur auf einer Basis pro zuverlässigem Kommunikationskanal (und einzelnem Zielort) erzwungen wird, kann das zweite WQE vor Fertigstellung des ersten WQE fertiggestellt werden. Somit können Abhängigkeiten zwischen einzelnen Zielorten verringert werden.
  • Die Speicher für unerledigte WQE 320A, 320B, ..., 320M sind so konfiguriert, dass WQE Fertigstellungen erleichtert werden, wenn die Fertigstellungsreihenfolge der zur SSQ 316 geleiteten WQEs der Sendereihenfolge der Nachrichten auf einer Basis pro zuverlässigem Kommunikationskanal (und pro Zielendpunkt) entspricht (d. h., unabhängig von anderen zuverlässigen Kommunikationskanälen und ihren verknüpften Zielorten). Wenn ein zur SSQ 316 geleitetes WQE fertiggestellt ist, kann es freigegeben werden, damit eine neue Arbeitsanfrage zur SSQ 316 geleitet werden kann. Wenn Fertigstellungen außerhalb der Reihenfolge in Bezug auf verschiedene Zielorte möglich sind, könnten WQEs, die vor einem neu fertiggestellten WQE zur SSQ 316 geleitet werden, nicht fertiggestellt werden. Das Speichern einer Kopie mindestens eines Abschnitts der WQEs in den richtigen Sendeverlaufsinformationsspeichern 312A, 312B, ..., 312M oder Speichern für unerledigte WQE 320A, 320B, ..., 320M ermöglicht, dass ein noch nicht fertiggestelltes, zuvor zugeleitetes WQE von der SSQ 316 freigegeben wird. Die Kopie des WQE kann dann verwendet werden, um einen zuverlässigen Dienst sicherzustellen, und ein Eintrag in der SSQ 316, der dem freigegebenen WQE entspricht, kann wieder verwendet werden. Es sollte festgehalten werden, dass, obwohl das WQE aus der SSQ 316 vor einer Fertigstellung freigegeben werden kann, die verknüpften Datenzwischenspeicher erst freigegeben werden können, wenn das WQE durch den entsprechenden zuverlässigen Kommunikationskanal (unter Verwendung der Kopie des WQE) fertiggestellt ist.
  • Ein SSQ WQE kann nach Fertigstellung eines entsprechenden Eintrags in den Kanal-Sendeverlaufsinformationsspeichern 312A, 312B, ..., 312M fertiggestellt werden. Mit anderen Worten, anders als bei der Kommunikationsvorrichtung 302, kann eine Fertigstellung eines Eintrags im Kanal-Sendeverlaufsinformationsspeicher für einen entsprechenden zuverlässigen Kommunikationskanal zur Fertigstellung des verknüpften SSQ WQE für diesen zuverlässigen Kommunikationskanal führen, ohne Beachtung von Fertigstellungen von WQEs, die Nachrichten entsprechen, die auf anderen zuverlässigen Kommunikationskanälen gesendet werden.
  • In Betrieb kann eine Anwendung mit zu sendenden Daten ein Arbeitsschlangenelement (WQE) zur gemeinsamen Sendeschlange 316 leiten. Es kann eine Vielzahl von WQEs durch die Anwendung zur SSQ 316 geleitet werden. Jedes WQE enthält einen Deskriptor, der zum Identifizieren der entsprechenden zu sendenden Daten konfiguriert ist. Zum Beispiel kann der Deskriptor eine Zeigervorrichtung zu einer Stelle im Systemspeicher und einer Anzahl von zu sendenden Daten-Bytes enthalten. Jedes WQE, das zur SSQ geleitet wird, enthält einen zuverlässigen Kommunikationskanaldesignator, der zum Identifizieren des zuverlässigen Kommunikationskanals konfiguriert ist, der zum Senden der Nachricht verwendet werden sollte, die dem WQE entspricht.
  • Die Kommunikationsvorrichtung ist dann zum Senden jeder Nachricht in der Reihenfolge konfiguriert, in der die WQEs zur gemeinsamen Sendeschlange geleitet wurden. Die Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M sind zum Empfangen von Empfangsbestätigungen der gesendeten Nachrichten von den Zielvorrichtungen konfiguriert. Die Nachrichten können als eine Abfolge von Paketen gesendet werden. Für zuverlässige Kommunikationskanäle kann jedes Paket bestätigt werden und eine Sendung, mit der ein WQE verknüpft ist, kann fertiggestellt sein, wenn alle Pakete, die mit einer Nachricht (entsprechend dem WQE) verknüpft sind, gesendet wurden und von der Zielvorrichtung empfangsbestätigt wurden, und alle vorangehenden WQEs, die denselben zuverlässigen Kommunikationskanal anpeilen, ebenso fertiggestellt sind.
  • 4A und 4B sind Ablaufdiagramme, die eine Operation eines Hostsystems und einer Kommunikationsvorrichtung (z. B., Kommunikationsvorrichtung 302) zeigen, die zum Senden von Nachricht(en) zu mehreren Zielvorrichtungen über mehrere zuverlässige Kommunikationskanäle unter Verwendung einer gemeinsamen Sendeschlange konfiguriert sind. Die in 4A und 4B dargestellten Operationen sind zum Bewahren der Sendereihenfolge von Nachrichten entsprechend WQEs in der gemeinsamen Sendeschlange für die gemeinsame Sendeschlange (und nicht für einen zuverlässigen Kommunikationskanal) konfiguriert. Mit anderen Worten, die Fertigstellungsreihenfolge entspricht der Sendereihenfolge über die zuverlässigen Kommunikationskanäle.
  • Die Operationen von 4A und 4B können von einer Anwendung ausgeführt werden, die auf einem Hostsystem (z. B., Hostsystem 102), einer Kommunikationsvorrichtung (z. B., Netzsteuerung 110), einer Begleitvorrichtung (z. B., Speichersteuerung 114) oder einer Kombination davon läuft. Das Ablaufdiagramm 400 beginnt, wenn eine Anwendung über Daten verfügt, die zu einem Zielendpunkt 402 zu senden sind. Die Anwendung kann in Operation 406 eine Arbeitsanfrage generieren. Die Arbeitsanfrage kann Steuerinformationen enthalten, die Nachrichtenart und Nachrichtenattribute, Deskriptoren, die eine Stelle im Speicher anzeigen, wo zu sendende Daten gespeichert werden, eine zu sendende Datenmenge, einen Designator, der einem zuverlässigen Kommunikationskanal entspricht, der zum Senden verwendet wird, und/oder einen Designator, der eine Zielvorrichtung angibt, die die Nachricht empfangen soll, beschreiben.
  • Die Operation 410 kann das Zuleiten eines Arbeitsschlangenelements (WQEx), das der Arbeitsanfrage entspricht, zur gemeinsamen Sendeschlange (SSQ) enthalten. Das Arbeitsschlangenelement kann einen zuverlässigen Kommunikationskanalidentifikator (RCy) enthalten. Die Nachricht, die dem WQEx entspricht, kann in Operation 412 auf dem zuverlässigen Kommunikationskanal, der dem RCy entspricht, gesendet werden. Eine Stelle im Sendeverlaufsinformationsspeicher, die mit dem zuverlässigen Kommunikationskanal RCy (z. B. RCy Xmit FIFO) verknüpft ist, kann in Operation 414 WQEx zugeteilt werden. Eine Stelle im Sendeverlaufsinformationsspeicher, die mit der SSQ (z. B., SSQ Xmit FIFO) verknüpft ist, kann in Operation 416 dem WQEx zugeteilt werden. Der Sendeverlaufsinformationsspeicher für den zuverlässigen Kommunikationskanal RCy (d. h., RCy Xmit FIFO) kann in Operation 418 mit dem Sendeverlaufsinformationsspeicher für die gemeinsame Sendeschlange (SSQ Xmit FIFO) verknüpft werden. Die Operationen von Ablaufdiagramm 400 können bei Zurück 420 enden. Die Operation 412, die zwar parallel dargestellt ist, kann vor oder parallel zu Operationen 414, 416, und 418 ausgeführt werden. Wenn die Operation 412 parallel zu Operationen 414, 416 oder 418 ausgeführt wird, kann ein relativer Zeitverlauf der Operationen begrenzt sein um sicherzustellen, dass der Sendeverlaufsinformationsspeicher RCy Xmit FIFO, der mit dem zuverlässigen Kommunikationskanal RCy verknüpft ist, vor dem Senden der Nachricht aktualisiert wurde, um eine theoretisch mögliche Wettkampfsituation zu vermeiden, in der eine Bestätigung für die gesendete Nachricht vor Beendigung der Aktualisierung des RCy Xmit FIFO Eintrags eintrifft. Die Operationen von Ablaufdiagramm 400 können wiederholt werden, sobald die Anwendung über Daten verfügt, die zu einem Zielendpunkt zu senden sind. Somit kann die SSQ von der Anwendung verwendet werden, um mehrere Nachrichten zu mehreren Zielendpunkten zu senden, wo jede Nachricht entsprechenden verknüpften Daten entspricht.
  • Das Ablaufdiagramm 450 (4B) beginnt, wenn eine Bestätigung von einer Zielvorrichtung empfangen wird 452. Die Operation 454 kann eine Aktualisierung eines entsprechenden Kommunikationskanal-Sendeverlaufsinformationsspeichers (RC Xmit FIFO) enthalten. Zum Beispiel kann eine positive Bestätigung angeben, dass ein gesendetes Paket korrekt von der Zielvorrichtung empfangen wurde. Wenn das Paket nicht korrekt empfangen oder überhaupt nicht empfangen wird, kann eine negative Bestätigung von der Zielvorrichtung empfangen werden oder eine Zeitüberschreitung kann bei der sendenden Kommunikationsvorrichtung ablaufen und die sendende Vorrichtung kann dann das Paket erneut senden.
  • Die Operation 456 kann die Bestimmung enthalten, ob der aktualisierte RC Xmit FIFO Eintrag fertiggestellt ist (d. h., die Nachricht, die mit dem aktualisierten RC Xmit FIFO Eintrag verknüpft ist, wurde erfolgreich empfangen und von der Zielvorrichtung bestätigt). Wenn der aktualisierte RC Xmit FIFO Eintrag nicht fertiggestellt ist, kann der Programmablauf in Operation 460 zurückkehren. Wenn der aktualisierte RC Xmit Eintrag fertiggestellt ist, kann der entsprechende Eintrag im gemeinsamen Sendeschlangen-Sendeverlaufsinformationsspeicher (SSQ Xmit FIFO) in Operation 464 mit PendingCompletion markiert werden.
  • Zum Beispiel kann eine Nachricht in eine Abfolge von Paketen segmentiert werden, die von der Host-Kommunikationsvorrichtung zu einer Zielvorrichtung unter Verwendung des zuverlässigen Kommunikationskanals RCy gesendet werden. Zur Sicherstellung einer ordnungsgemäßen Fertigstellung der gesendeten Pakete (d. h., alle Pakete werden vom Zielort empfangsbestätigt) kann der verknüpfte RC Sendeverlaufsinformationsspeicher (z. B., RCy Xmit FIFO) zum Verfolgen von Bestätigungen verwendet werden. Wenn alle gesendeten Pakete empfangsbestätigt sind und alle vorangehenden Nachrichten auf demselben zuverlässigen Kommunikationskanal fertiggestellt sind, ist die Nachricht fertiggestellt und der entsprechende Eintrag in der SSQ Xmit FIFO kann mit PendingCompletion markiert werden.
  • Die Operation 466 kann die Bestimmung enthalten, ob der entsprechende SSQ Xmit FIFO Eintrag in der Sendereihenfolge der nächste ist (d. h., ein erstes nicht fertiggestelltes WQE in der SSQ ist). Wenn der entsprechende SSQ Xmit FIFO Eintrag nicht der nächste in der Sendereihenfolge ist, kann der Programmablauf in Operation 460 zurückkehren. Wenn der entsprechende SSQ Xmit FIFO Eintrag der nächste in der Sendereihenfolge ist, kann der entsprechende SSQ Xmit FIFO Eintrag in Operation 468 fertiggestellt werden.
  • Die Operation 470 kann die Bestimmung enthalten, ob in Operation 470 ein nächster SSQ Xmit FIFO Eintrag mit PendingCompletion markiert wird. Wenn der nächste SSQ Xmit FIFO Eintrag mit PendingCompletion markiert ist, kann der Programmablauf mit Operation 468 fortfahren und der nächste SSQ Xmit FIFO Eintrag kann fertiggestellt werden. Wenn der nächste SSQ Xmit FIFO Eintrag nicht mit PendingCompletion markiert ist, können gemeinsame Sendeschlangeneingaben, die den fertiggestellten SSQ Xmit FIFO Eingaben entsprechen, in Operation 472 freigegeben werden (und dann kann die Fertigstellung der Anwendung, z. B. unter Verwendung von Mechanismen, die von einer Hostschnittstelle definiert sind, mitgeteilt werden). Der Programmablauf kann dann zu Operation 460 zurückkehren.
  • Die Operationen von Ablaufdiagramm 450 sind so konfiguriert, dass sie sicherstellen, dass gesendete Nachrichten in der Reihenfolge fertiggestellt werden, in der ihre verknüpften Arbeitsschlangenelemente zur gemeinsamen Sendeschlange geleitet (und somit gesendet) wurden. Jedes Arbeitsschlangenelement ist zum Bestimmen des zuverlässigen Kommunikationskanals konfiguriert, der zum Senden der verknüpften Nachricht verwendet wird. Somit werden Fertigstellungen der anfragenden Anwendung in der Reihenfolge kommuniziert, in der die WQEs zur SSQ geleitet wurden, unabhängig von der Reihenfolge der Fertigstellung von WQEs zwischen den zuverlässigen Kommunikationskanälen.
  • 5A und 5B sind Ablaufdiagramme 500, 550, die Operationen eines Hostsystems und einer Kommunikationsvorrichtung (z. B. Kommunikationsvorrichtung 304) zeigen, die zum Senden von Nachrichten zu mehreren Zielvorrichtungen über mehrere zuverlässige Kommunikationskanäle konfiguriert sind. Die in 5A und 5B dargestellten Operationen sind zum Bewahren der Sendereihenfolge pro zuverlässigem Kommunikationskanal für Nachrichten konfiguriert, die WQEs entsprechen, die zur gemeinsamen Sendeschlange geleitet wurden. Mit anderen Worten, Fertigstellungen werden der Anwendung für jeden zuverlässigen Kommunikationskanal in der Reihenfolge kommuniziert, in der die WQEs zur gemeinsamen Sendeschlange für diesen zuverlässigen Kommunikationskanal geleitet wurden, unabhängig von Fertigstellungen für Nachrichten, die über andere zuverlässige Kommunikationskanäle gesendet wurden.
  • Die Operationen von 5A und 5B können von einer Anwendung ausgeführt werden, die auf einem Hostsystem (z. B. Hostsystem 102), einer Kommunikationsvorrichtung (z. B. Netzsteuerung 110), einer Begleitvorrichtung (z. B. Speichersteuerung 114) oder einer Kombination davon läuft. Das Ablaufdiagramm 500 beginnt, wenn eine Anwendung Daten hat, die zu einem Zielendpunkt 502 zu senden sind. Die Anwendung kann in Operation 506 eine Arbeitsanfrage generieren. Die Arbeitsanfrage kann Steuerinformationen enthalten, die Nachrichtenart und Nachrichtenattribute, Deskriptoren, die eine Stelle im Speicher angeben, wo die zu sendenden Daten gespeichert werden sollen, und eine zu sendende Datenmenge, einen Designator, der einem zu verwendenden zuverlässigen Kommunikationskanal zum Senden entspricht, und/oder einen Designator, der eine Zielvorrichtung angibt, die die Nachricht empfangen soll, beschreiben.
  • Die Operation 510 kann das Zuleiten eines Arbeitsschlangenelements (WQEx), das der Arbeitsanfrage entspricht, zu einer gemeinsamen Sendeschlange (SSQ) enthalten. Das WQEx kann einen zuverlässigen Kommunikationskanalidentifikator (RCy) enthalten. Die Nachricht, die dem WQEx entspricht, kann in Operation 512 über den zuverlässigen Kommunikationskanal, der dem RCy entspricht, gesendet werden. Eine Stelle im Sendeverlaufsinformationsspeicher, die mit dem zuverlässigen Kommunikationskanal RCy (z. B., RCyXmit FIFO) verknüpft ist, kann dem WQEx in Operation 514 zugeteilt werden. Die Operation 516 enthält das Kopieren des mindestens einen Abschnitts des Arbeitsschlangenelements WQEx aus der SSQ in den verknüpften Sendeverlaufsinformationsspeicher RCy Xmit FIFO oder zu einer Struktur (z. B., Speicher für unerledigte WQE (RCy SPEICHER)), die mit dem Sendeverlaufsinformationsspeicher RCyXmit FIFO verknüpft ist. Die Kopie des Arbeitsschlangenelements kann zur Fertigstellung und erneuten Sendung eines Pakets oder mehrerer Pakete der Nachricht verwendet werden (z. B. wenn eine negative Bestätigung von der Zielvorrichtung empfangen wird oder keine Bestätigung empfangen wird und eine Zeitüberschreitung bei der Kommunikationsvorrichtung eintritt). Die Operationen des Ablaufdiagramms 500 können bei Zurück 520 enden. Obwohl die Operation 512 parallel dargestellt ist, kann sie parallel zu oder vor den Operationen 514 und 516 durchgeführt werden (mit einer ähnlichen Einschränkung wie in Bezug auf 4A beschrieben).
  • Das Ablaufdiagramm 550 (5B) beginnt, wenn eine Bestätigung von einer Zielvorrichtung empfangen wird 552. Die Operation 554 kann eine Aktualisierung eines entsprechenden Kommunikationskanal-Sendeverlaufsinformationsspeichers (RC Xmit FIFO) enthalten. Zum Beispiel kann eine positive Bestätigung anzeigen, dass ein gesendetes Paket von der Zielvorrichtung korrekt empfangen wurde. Wenn das Paket nicht korrekt empfangen wird, kann eine negative Bestätigung von der Zielvorrichtung gesendet werden oder eine Zeitüberschreitung bei der sendenden Kommunikationsvorrichtung ablaufen und die sendende Vorrichtung kann das Paket erneut senden.
  • Die Operation 556 kann die Bestimmung enthalten, ob der aktualisierte RC Xmit FIFO Eintrag fertiggestellt ist. Wenn der aktualisierte RC Xmit FIFO Eintrag nicht fertiggestellt ist, kann der Programmablauf in Operation 560 zurückkehren. Wenn der aktualisierte RC Xmit Eintrag fertiggestellt ist, kann der Arbeitsschlangeneintrag der gemeinsamen Sendeschlange entsprechend dem RC Xmit Eintrag in Operation 562 fertiggestellt werden. Die Fertigstellung kann der Anwendung in Operation 564 kommuniziert werden. Der Arbeitsschlangeneintrag der gemeinsamen Sendeschlange kann ausreichende Informationen enthalten, um eine Identifizierung der Nachricht und des verknüpften Anwendungszwischenspeichers zu ermöglichen, so dass er nach Fertigstellung des Arbeitsschlangeneintrags der gemeinsamen Sendeschlange freigegeben werden kann. Der entsprechende Arbeitsschlangeneintrag in der gemeinsamen Sendeschlange kann in Operation 566 freigegeben werden. Der freigegebene Arbeitsschlangeneintrag kann dann zum Zuleiten einer anderen Arbeitsanfrage freigegeben werden. Der Programmablauf kann dann in Operation 520 zurückkehren.
  • Die Operationen von Ablaufdiagramm 550 sind so konfiguriert, dass sichergestellt ist, das gesendete Nachrichten in der Reihenfolge fertiggestellt werden, in der ihre verknüpften Arbeitsschlangenelemente zur gemeinsamen Sendeschlange für jeden zuverlässigen Kommunikationskanal geleitet wurden, unabhängig von der Fertigstellung von Nachrichten, die auf anderen zuverlässigen Kommunikationskanälen gesendet wurden. In dieser Ausführungsform können vorteilhaft relativ schnellere zuverlässige Kommunikationskanäle (und Zielvorrichtungen) ihre Sendungen fertigstellen, ohne durch langsamere zuverlässige Kommunikationskanäle (und Zielvorrichtungen) beschränkt zu sein, mit welchen sie die gemeinsame Sendeschlange teilen.
  • 6 und 7 sind zwei Beispiele, die Eingaben in die gemeinsame Sendeschlange, Eingaben in die Sendeverlaufsinformationsspeicher für die gemeinsame Sendeschlange und mehrere zuverlässige Kommunikationskanäle zeigen. Das Beispiel in 6 entspricht der Ausführungsform, in der die Fertigstellungsreihenfolge der Zuleitungsreihenfolge des Arbeitsschlangenelements in die gemeinsame Sendeschlange entspricht. Das Beispiel in 7 entspricht der Ausführungsform in der die Fertigstellungsreihenfolge der Zuleitungsreihenfolge des Arbeitsschlangenelements zur gemeinsamen Sendeschlange für einen entsprechenden zuverlässigen Kommunikationskanal entspricht.
  • Unter Bezugnahme nun auf 6 werden Arbeitsschlangenelemente (WQEx, wobei x = 1, 2, ..., 6) zu einer gemeinsamen Sendeschlange 602 in der Reihenfolge zuerst WQE1, dann WQE2, ..., dann WQE6 geleitet. Die Zuleitungsreihenfolge entspricht der Sendereihenfolge von Nachrichten, die mit den WQEs verknüpft sind. In diesem Beispiel ist jedes Arbeitsschlangenelement mit einem von drei zuverlässigen Kommunikationskanälen (RC1, RC2, RC3) verknüpft, z. B., WQE1 – RC3, WQE2 – RC2, WQE3 – RC1, usw. Nach dem Senden der Nachricht, die mit jedem WQE verknüpft ist, wird jedem WQE ein Eintrag im SSQ XMIT FIFO 604 (dem SSQ Sendeverlaufsinformationsspeicher) und ein Eintrag im Kanal-Sendeverlaufsinformationsspeicher (RCy (y = 1, 2 oder 3) XMIT FIFO) des verknüpften zuverlässigen Kommunikationskanals zugeteilt. WQE1 wurde der Eintrag E1 im SSQ Xmit FIFO 604 und der Eintrag E1 im RC3 Xmit FIFO 610 zugeteilt. WQE2 wurde der Eintrag E2 im SSQ Xmit FIFO 604 und der Eintrag E1 im RC2 Xmit FIFO 608 zugeteilt. WQE3 wurde der Eintrag E3 im SSQ Xmit FIFO 604 und der Eintrag E1 im RC1 Xmit FIFO 606 zugeteilt und so weiter. In diesem Beispiel können Eingaben in den Kommunikationskanal-Sendeverlaufsinformationsspeichern RCy Xmit FIFOs 606, 608, 610 aktualisiert werden, sobald Nachrichten fertiggestellt sind. Sobald RCyXmit FIFOs 606, 608, 610 fertiggestellt sind, können entsprechende Eingaben im SSQ Xmit FIFO 604 mit PendingCompletion, wie hierin beschrieben, markiert werden. In diesem Beispiel werden alle WQEs in der Reihenfolge fertiggestellt, in der sie zur SSQ 602 geleitet wurden und in der Reihenfolge, in der sie von der SSQ 602 gesendet wurden. WQE1 wird als erstes fertiggestellt, dann WQE2, WQE3, usw. Auf diese Weise werden Fertigstellungen in der Reihenfolge kommuniziert, in der WQEs zur gemeinsamen Sendeschlange 602 für alle der zuverlässigen Kommunikationskanäle geleitet wurden.
  • Unter Bezugnahme auf 7 werden Arbeitsschlangenelemente (WQEx) zur gemeinsamen Sendeschlange 702 in der Reihenfolge WQE1, WQE2, ..., WQE6 geleitet. Jedes Arbeitsschlangenelement wird mit einem von drei zuverlässigen Kommunikationskanälen RC1, RC2, RC3 verknüpft. Die Sendereihenfolge von Nachrichten, die WQEs in SSQ 702 entsprechen, ist durch die „Sendereihenfolge” angegeben. WQEs werden in der Reihenfolge gesendet, in der sie zur SSQ geleitet wurden. WQE1 wird als erstes gesendet, dann WQE2, usw. Jedes WQEx wird mit einem bestimmten zuverlässigen Kommunikationskanal RC1, RC2 oder RC3 (z. B. WQE1 – RC3, WQE2 – RC2, WQE3 – RC1, usw.) verknüpft. Nach dem Senden wird jedes WQEx einem Eintrag im RCy Xmit FIFO seines verknüpften zuverlässigen Kommunikationskanals zugeteilt und mindestens ein Abschnitts des WQE wird entweder in den zugeteilten RCyXMIT FIFO Eintrag oder in die neue Struktur kopiert, auf die der RCyXmit FIFO Eintrag verweist (d. h., Speicher für unerledigte WQE 716, 718, 720). In diesem Beispiel wurde WQE1 dem Eintrag E1 in RC3 Xmit FIFO 710 zugeteilt, WQE2 wurde dem E1 in RC2 Xmit FIFO 708 zugeteilt, WQE3 wurde dem Eintrag E1 in RC1 Xmit FIFO 706 zugeteilt und so weiter. Die Strichlinien in 7 entsprechen dem Kopieren mindestens eines Abschnitts jedes WQE aus der SSQ 702 in den entsprechenden Speicher für unerledigte WQE 716, 718, 720.
  • WQEs können in einer Reihenfolge fertiggestellt werden, die sich von der WQE (d. h., Nachrichten-)Sendereihenfolge unterscheidet. Nachrichten, die auf RC1 (WQE3 und WQE6) gesendet werden, werden als erste fertiggestellt, dann werden Nachrichten, die auf RC2 (WQE2 und WQE5) gesendet werden, fertiggestellt und schließlich werden Nachrichten, die auf RC1 (WQE1 und WQE4) gesendet werden, fertiggestellt. Alle WQEs wurden in der Reihenfolge für ihren verknüpften zuverlässigen Kommunikationskanal fertiggestellt. Die Fertigstellungsreihenfolge im Sinne des Arbeitsschlangenelements in der SSQ 702 ist: WQE3, WQE6, WQE2, WQE5, WQE1 und WQE4. Bei Bedarf kann eine erneute Sendung den mindestens einen Abschnitt jedes Arbeitsschlangenelements verwenden, der in den Speicher für unerledigte WQE 716, 718, 720 wie hierin beschrieben kopiert wurde. Fertigstellungen werden der anfragenden Anwendung gemäß der WQE Zuleitungsreihenfolge zur gemeinsamen Sendeschlange 702 für jeden zuverlässigen Kommunikationskanal kommuniziert.
  • Es wurden ein Verfahren, eine Vorrichtung und ein System, die so konfiguriert sind, dass sie mehrere zuverlässige Kommunikationskanäle unter Verwendung einer gemeinsamen Sendeschlange unterstützen, beschrieben. Die gemeinsame Sendeschlange ist so konfiguriert, dass sie ermöglicht, dass eine Anwendung mit mehreren Zielorten über mehrere zuverlässige Kommunikationskanäle kommuniziert. Eine Kommunikationsvorrichtung wie eine Netzsteuerung ist zum Verwalten der Kommunikation über die mehreren zuverlässigen Kommunikationskanäle konfiguriert. Das Verfahren, die Vorrichtung und das System sind so konfiguriert, dass sie ermöglichen, dass eine erste Vielzahl von unerledigten Nachrichten mit der gemeinsamen Sendeschlange zu einem Zeitpunkt verknüpft wird. Das Verfahren, die Vorrichtung und das System sind so konfiguriert, dass sie ermöglichen, dass eine zweite Vielzahl von unerledigten Nachrichten mit einem zuverlässigen Kommunikationskanal verknüpft wird. Dies ist anders als bei herkömmlichen Systemen, die eine Sendeschlange und einen Kommunikationskanal auf eine unerledigte Nachricht begrenzen. In einer Ausführungsform, entspricht eine Fertigstellungsreihenfolge von Arbeitsschlangenelementen, die zur gemeinsamen Sendeschlange geleitet wurden, der Sendereihenfolge der Nachrichten, die den Arbeitsschlangenelementen für die gemeinsame Sendeschlange entsprechen. In einer anderen Ausführungsform, entspricht die Fertigstellungsreihenfolge von Arbeitsschlangenelementen, die zur gemeinsamen Sendeschlange geleitet wurden, der Sendereihenfolge der Nachrichten auf einer Basis pro zuverlässigem Kommunikationskanal (d. h., unabhängig von anderen zuverlässigen Kommunikationskanälen). In beiden Ausführungsformen entspricht die Sendereihenfolge der Zuleitungsreihenfolge von Arbeitsschlangenelementen zur gemeinsamen Sendeschlange.
  • Während zuvor beispielhafte Systemarchitekturen und Methodologien beschrieben wurden, sind Modifizierungen der vorliegenden Offenbarung möglich. Zum Beispiel kann ein Betriebssystem 105 im Hostsystemspeicher Systemressourcen und Steueraufgaben verwalten, die z. B. auf dem Hostsystem 102 laufen. Zum Beispiel kann das OS 105 unter Verwendung von Microsoft Windows, HP-UX, Linux oder UNIX implementiert werden, obwohl auch andere Betriebssysteme verwendet werden können. In einer Ausführungsform kann das in 1 dargestellte OS 105 durch einen virtuellen Maschinenmanager ersetzt werden, der eine Abstraktionsschicht für eine darunter liegende Hardware für verschiedene Betriebssysteme bereitstellen kann, die auf einer oder mehreren Verarbeitungseinheit(en) laufen.
  • Das Betriebssystem 105 kann einen oder mehrere Protokollstapel implementieren. Ein Protokollstapel kann ein oder mehrere Programm(e) zur Paketverarbeitung ausführen. Ein Beispiel für einen Protokollstapel ist ein TCP/IP (Transport Control Protocol/Internet Protocol) Protokollstapel, der ein oder mehrere Programm(e) zum Handhaben (z. B. Verarbeiten oder Generieren) von Paketen umfasst, die über ein Netz gesendet und/oder empfangen werden. Ein Protokollstapel kann alternativ auf einem zweckbestimmten Teilsystem vorhanden sein, wie zum Beispiel einer TCP Offload-Maschine und/oder Netzsteuerung 110.
  • Andere Modifizierungen sind möglich. Zum Beispiel kann ein Systemspeicher, z. B. ein Systemspeicher 106 und/oder Speicher, der mit der Netzsteuerung, z. B. Netzsteuerung 110, verknüpft ist, eine oder mehrere der folgenden Arten von Speicher umfassen: Halbleiter-Firmware-Speicher, programmierbarer Speicher, nicht flüchtiger Speicher, Nur-Lese-Speicher, elektrisch programmierbarer Speicher, Direktzugriffsspeicher, Flash-Speicher, Magnetplattenspeicher und/oder optischer Plattenspeicher. Der Systemspeicher 106 und/oder Speicher, der mit der Netzsteuerung 110 verknüpft ist, kann zusätzlich und/oder alternativ andere und/oder später entwickelte Arten von computerlesbarem Speicher umfassen.
  • Ausführungsformen der hierin beschriebenen Verfahren können in einem System implementiert werden, das ein Speichermedium oder mehrere Speichermedien enthält, auf welchen einzeln oder in Kombination Anweisungen gespeichert sind, die, wenn sie von einem oder mehreren Prozessor(en) ausgeführt werden, die Verfahren durchführen. Hier kann der Prozessor zum Beispiel eine Verarbeitungseinheit und/oder eine programmierbare Schaltung in der Netzsteuerung enthalten. Somit ist beabsichtigt, dass die Operationen gemäß der hierin beschriebenen Verfahren über mehrere physische Vorrichtungen verteilt sein können, wie Verarbeitungsstrukturen an mehreren unterschiedlichen physischen Stellen. Das Speichermedium kann jede Art von materiellem Medium enthalten, zum Beispiel jede Art von Platte, einschließlich Disketten, optischen Speicherplatten, Kompaktdisk-Nur-Lesespeichern (CD-ROMs), wiederbeschreibbarer Kompaktdisk (CD-RWs) und magneto-optischer Datenträger, Halbleitervorrichtung, wie Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAMs) wie dynamischer und statischer RAMs, löschbarer programmierbarer Nur-Lese-Speicher (EPROMs), elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROMs), Flash-Speicher, magnetischer oder optischer Karten oder jeder Art von Medien, die für eine Speicherung elektronischer Anweisungen geeignet ist.
  • Das hierin beschriebene Ethernet-Kommunikationsprotokoll kann imstande sein, eine Kommunikation unter Verwendung eines TCP/IP (Transmission Control Protocol/Internet Protocol) zu ermöglichen. Das Ethernet-Protokoll kann dem Ethernet-Standard, der vom Institute of Electrical and Electronics Engineers (IEEE) mit dem Titel „IEEE 802.3 Standard” im März 2002 veröffentlicht wurde, und/oder späteren Versionen dieses Standards entsprechen oder mit diesem (diesen) kompatibel sein.
  • Das hierin beschriebene InfiniBandTM Kommunikationsprotokoll kann imstande sein, eine Errichtung und Verwendung einer zuverlässigen Kommunikation mit einer Nachrichtenfertigstellung in Reihenfolge zu ermöglichen. Das InfiniBandTMProtokoll kann der InfiniBand Spezifikation, die von der InfiniBand Trade Association (IBTA) mit dem Titel „InfiniBand Architecture Specification, Volume 1, Release 1.2.1” im Juni 2001 veröffentlicht wurde, und/oder späteren Versionen dieser Spezifikation entsprechen oder mit dieser (diesen) kompatibel sein.
  • Das hierin beschriebene iWARP Kommunikationsprotokoll kann imstande sein, eine Errichtung und Verwendung einer zuverlässigen Kommunikation mit einer Nachrichtenfertigstellung in Reihenfolge zu ermöglichen. Das iWARP Protokoll kann mit dem iWARP Standard, der vom RDMA Consortium entwickelt und gewartet wird und von der Internet Engineering Task Force(IETF) mit dem Titel „RDMA over Transmission Control Protocol (TCP) standard” 2007 veröffentlicht wurde, und/oder späteren Versionen dieses Standards entsprechen oder mit diesem (diesen) kompatibel sein.
  • „Schaltung”, wie in einer beliebigen Ausführungsform hierin verwendet, kann zum Beispiel, einzeln oder in jeder beliebigen Kombination, eine festverdrahtete Schaltung, programmierbare Schaltung, Zustandsmaschinenschaltung und/oder Firmware umfassen, die Anweisungen speichert, die von einer programmierbaren Schaltung ausgeführt werden.
  • In einem Aspekt wird ein Verfahren bereitgestellt. Das Verfahren enthält das Zuleiten mehrerer Arbeitsschlangenelemente zu einer gemeinsamen Sendeschlange in einer Zuleitungsreihenfolge, wobei jedes Arbeitsschlangenelement einen Deskriptor, der zum Identifizieren entsprechender zu sendender Daten konfiguriert ist, und einen Kommunikationskanaldesignator, der zum Identifizieren eines Kommunikationskanals konfiguriert ist, der zum Senden der Daten verwendet wird, umfasst; das Senden einer Nachricht, die jedem Arbeitsschlangenelement entspricht, unter Verwendung des identifizierten Kommunikationskanals, wobei die Nachricht die entsprechenden zu sendenden Daten umfasst, wobei die Nachrichten in einer Sendereihenfolge entsprechend der Zuleitungsreihenfolge der Arbeitsschlangenelemente gesendet werden; und das Fertigstellen der Arbeitsschlangenelemente in der gemeinsamen Sendeschlange in einer Fertigstellungsreihenfolge, wobei sich die Fertigstellungsreihenfolge auf die Zuleitungsreihenfolge bezieht.
  • In einem anderen Aspekt wird ein Kommunikationssystem bereitgestellt. Das Kommunikationssystem enthält eine gemeinsame Sendeschlange, die zum Speichern mehrerer Arbeitsschlangenelemente konfiguriert ist, wobei die Arbeitsschlangenelemente in einer Zuleitungsreihenfolge zur gemeinsamen Sendeschlange geleitet werden, wobei jedes Arbeitsschlangenelement einen Deskriptor, der zum Identifizieren entsprechender zu sendender Daten konfiguriert ist, und einen Kommunikationskanaldesignator, der zum Identifizieren eines Kommunikationskanals konfiguriert ist, der zum Senden der Daten verwendet wird, umfasst; eine Kommunikationsvorrichtung, die zum Senden einer Nachricht, die jedem Arbeitsschlangenelement entspricht, unter Verwendung des identifizierten Kommunikationskanals konfiguriert ist, wobei die Nachricht die entsprechenden zu sendenden Daten umfasst, wobei die Nachrichten in einer Sendereihenfolge entsprechend der Zuleitungsreihenfolge der Arbeitsschlangenelemente gesendet werden; und die Kommunikationsvorrichtung zum Fertigstellen der Arbeitsschlangenelemente in der gemeinsamen Sendeschlange in einer Fertigstellungsreihenfolge konfiguriert ist, wobei sich die Fertigstellungsreihenfolge auf die Zuleitungsreihenfolge bezieht.
  • In einem anderen Aspekt wird ein System bereitgestellt. Das System enthält ein Speichermedium oder mehrere Speichermedien, auf welchen einzeln oder in Kombination, Anweisungen gespeichert sind, die, wenn sie von einem oder mehreren Prozessor(en) ausgeführt werden, zu folgendem führen: Zuleiten mehrerer Arbeitsschlangenelemente zu einer gemeinsamen Sendeschlange in einer Zuleitungsreihenfolge, wobei jedes Arbeitsschlangenelement einen Deskriptor, der zum Identifizieren entsprechender zu sendender Daten konfiguriert ist, und einen Kommunikationskanaldesignator, der zum Identifizieren eines Kommunikationskanals konfiguriert ist, der zum Senden der Daten verwendet wird, umfasst; Senden einer Nachricht, die jedem Arbeitsschlangenelement entspricht, unter Verwendung des identifizierten Kommunikationskanals, wobei die Nachricht die entsprechenden zu sendenden Daten umfasst, wobei die Nachrichten in einer Sendereihenfolge entsprechend der Zuleitungsreihenfolge der Arbeitsschlangenelemente gesendet werden; und Fertigstellen der Arbeitsschlangenelemente in der gemeinsamen Sendeschlange in einer Fertigstellungsreihenfolge, wobei sich die Fertigstellungsreihenfolge auf die Zuleitungsreihenfolge bezieht.
  • Die Begriffe und Ausdrücke, die hierin verwendet werden, werden zur Beschreibung und nicht zur Einschränkung verwendet und bei Verwendung solcher Begriffe und Ausdrücke ist nicht beabsichtigt, Äquivalente der dargestellten und beschriebenen Merkmale (oder Teilen davon) auszuschließen, und es wird anerkannt, dass verschiedene Modifizierungen im Umfang der Ansprüche möglich sind. Daher sollen die Ansprüche alle derartigen Äquivalente abdecken.
  • Es wurden hierin verschiedene Merkmale, Aspekte und Ausführungsformen beschrieben. die Merkmale, Aspekte und Ausführungsformen sind einer Kombination miteinander wie auch einer Variation und Modifizierung zugänglich, wie für einen Fachmann offensichtlich ist. Die vorliegende Offenbarung sollte daher so verstanden werden, dass sie solche Kombinationen, Variationen und Modifizierungen beinhaltet.

Claims (21)

  1. Verfahren, umfassend: Zuleiten mehrerer Arbeitsschlangenelemente zu einer gemeinsamen Sendeschlange in einer Zuleitungsreihenfolge, wobei jedes Arbeitsschlangenelement einen Deskriptor, der zum Identifizieren entsprechender zu sendender Daten konfiguriert ist, und einen Kommunikationskanaldesignator, der zum Identifizieren eines Kommunikationskanals konfiguriert ist, der zum Senden der Daten verwendet wird, umfasst; Senden einer Nachricht, die jedem Arbeitsschlangenelement entspricht, unter Verwendung des identifizierten Kommunikationskanals, wobei die Nachricht die entsprechenden zu sendenden Daten umfasst, wobei die Nachrichten in einer Sendereihenfolge entsprechend der Zuleitungsreihenfolge der Arbeitsschlangenelemente gesendet werden; und Fertigstellen der Arbeitsschlangenelemente in der gemeinsamen Sendeschlange in einer Fertigstellungsreihenfolge, wobei sich die Fertigstellungsreihenfolge auf die Zuleitungsreihenfolge bezieht.
  2. Verfahren nach Anspruch 1 wobei jeder Kommunikationskanal ein zuverlässiger Kommunikationskanal ist, der zum Bereitstellen einer zuverlässigen Ende-zu-Ende-Konnektivität zwischen einer Sende-Hostvorrichtung und einer entsprechenden Zielvorrichtung konfiguriert ist.
  3. Verfahren nach Anspruch 1, wobei die Fertigstellungsreihenfolge dieselbe wie die Zuleitungsreihenfolge für die mehreren Arbeitsschlangenelemente ist, die zur gemeinsamen Sendeschlange geleitet werden.
  4. Verfahren nach Anspruch 1 wobei die Fertigstellungsreihenfolge dieselbe wie die Zuleitungsreihenfolge für Arbeitsschlangenelemente mit demselben Kommunikationskanaldesignator ist.
  5. Verfahren nach Anspruch 3, des Weiteren umfassend: Zuteilen einer Stelle in einem entsprechenden Kommunikationskanal-Sendeverlaufsinformationsspeicher und einer Stelle in einem gemeinsamen Sendeschlange-Sendeverlaufsinformationsspeicher für jede gesendete Nachricht; und Verknüpfen der Stelle im entsprechenden Kommunikationskanal-Sendeverlaufsinformationsspeicher mit der Stelle im gemeinsamen Sendeschlangen-Sendeverlaufsinformationsspeicher für jede gesendete Nachricht, wobei der entsprechende Kommunikationskanal-Sendeverlaufsinformationsspeicher so konfiguriert ist, dass er eine Fertigstellungsreihenfolge sicherstellt, die dieselbe wie die Zuleitungsreihenfolge für Nachrichten ist, die auf dem entsprechenden Kommunikationskanal gesendet werden, und der gemeinsame Sendeschlangen-Sendeverlaufsinformationsspeicher so konfiguriert ist, dass er die Fertigstellungsreihenfolge sicherstellt, die dieselbe wie die Zuleitungsreihenfolge für die mehreren Arbeitsschlangenelemente ist.
  6. Verfahren nach Anspruch 4, des Weiteren umfassend: Zuteilen einer Stelle in einem entsprechenden Kommunikationskanal-Sendeverlaufsinformationsspeicher für jede gesendete Nachricht; und Kopieren mindestens eines Abschnitts eines entsprechenden Arbeitsschlangenelements in die zugeteilte Stelle im entsprechenden Kommunikationskanal-Sendeverlaufsinformationsspeicher, wobei der entsprechende Kommunikationskanal-Sendeverlaufsinformationsspeicher so konfiguriert ist, dass er eine Fertigstellungsreihenfolge sicherstellt, die dieselbe wie die Zuleitungsreihenfolge für Nachrichten ist, die auf dem entsprechenden Kommunikationskanal gesendet werden, und das kopierte Arbeitsschlangenelement so konfiguriert ist, dass es eine Freigabe von ausgewählten, noch nicht fertiggestellten Arbeitsschlangenelementen aus der gemeinsamen Sendeschlange ermöglicht.
  7. Verfahren nach Anspruch 1, wobei mindestens eines von der gemeinsamen Sendeschlange und dem identifizierten Kommunikationskanal so konfiguriert ist, dass mehrere unerledigte Nachrichten zu einem Zeitpunkt gesendet werden können.
  8. Kommunikationssystem, umfassend: eine gemeinsame Sendeschlange, die zum Speichern mehrerer Arbeitsschlangenelemente konfiguriert ist, wobei die Arbeitsschlangenelemente der gemeinsamen Sendeschlange in einer Zuleitungsreihenfolge zugeleitet werden, wobei jedes Arbeitsschlangenelement einen Deskriptor, der zum Identifizieren entsprechender zu sendender Daten und einen Kommunikationskanaldesignator, der zum Identifizieren eines Kommunikationskanals konfiguriert ist, der zum Senden der Daten verwendet wird, umfasst; eine Kommunikationsvorrichtung, die zum Senden einer Nachricht, die jedem Arbeitsschlangenelement entspricht, unter Verwendung des identifizierten Kommunikationskanals konfiguriert ist, wobei die Nachricht die entsprechenden zu sendenden Daten umfasst, wobei die Nachrichten in einer Sendereihenfolge entsprechend der Zuleitungsreihenfolge der Arbeitsschlangenelemente gesendet werden; und die Kommunikationsvorrichtung, die zum Fertigstellen der Arbeitsschlangenelemente in der gemeinsamen Sendeschlange in einer Fertigstellungsreihenfolge konfiguriert ist, wobei sich die Fertigstellungsreihenfolge auf die Zuleitungsreihenfolge bezieht.
  9. Kommunikationssystem nach Anspruch 8, wobei jeder Kommunikationskanal ein zuverlässiger Kommunikationskanal ist, der zum Bereitstellen einer zuverlässigen Ende-zu-Ende-Konnektivität zwischen einer sendenden Hostvorrichtung und einer entsprechenden Zielvorrichtung konfiguriert ist.
  10. Kommunikationssystem nach Anspruch 8, wobei die Fertigstellungsreihenfolge dieselbe wie die Zuleitungsreihenfolge für die mehreren Arbeitsschlangenelemente ist, die zur gemeinsamen Sendeschlange geleitet werden.
  11. Kommunikationssystem nach Anspruch 8, wobei die Fertigstellungsreihenfolge dieselbe wie die Zuleitungsreihenfolge für Arbeitsschlangenelemente mit demselben Kommunikationskanaldesignator ist.
  12. Kommunikationssystem nach Anspruch 10, wobei die Kommunikationsvorrichtung ferner so konfiguriert ist, dass: eine Stelle in einem entsprechenden Kommunikationskanal-Sendeverlaufsinformationsspeicher mit der Stelle in einem gemeinsamen Sendeschlangen-Sendeverlaufsinformationsspeicher für jede gesendete Nachricht verknüpft wird; und die Stelle im entsprechenden Kommunikationskanal-Sendeverlaufsinformationsspeicher mit der Stelle im gemeinsamen Sendeschlangen-Sendeverlaufsinformationsspeicher verknüpft wird, wobei der entsprechende Kommunikationskanal-Sendeverlaufsinformationsspeicher so konfiguriert ist, dass er eine Fertigstellungsreihenfolge sicherstellt, die dieselbe wie die Zuleitungsreihenfolge für Nachrichten ist, die auf dem entsprechenden Kommunikationskanal gesendet werden, und der gemeinsame Sendeschlangen-Sendeverlaufsinformationsspeicher so konfiguriert ist, dass er eine Fertigstellungsreihenfolge sicherstellt, die dieselbe wie die Zuleitungsreihenfolge der mehreren Arbeitsschlangenelemente ist.
  13. Kommunikationssystem nach Anspruch 11, wobei die Kommunikationsvorrichtung ferner so konfiguriert ist, dass: eine Stelle in einem entsprechenden Kommunikationskanal-Sendeverlaufsinformationsspeicher für jede gesendete Nachricht zugeteilt wird; und mindestens ein Abschnitt eines entsprechenden Arbeitsschlangenelements zu der zugeteilten Stelle im entsprechenden Kommunikationskanal-Sendeverlaufsinformationsspeicher kopiert wird, wobei der entsprechende Kommunikationskanal-Sendeverlaufsinformationsspeicher so konfiguriert ist, dass er eine Fertigstellungsreihenfolge sicherstellt, die dieselbe wie die Zuleitungsreihenfolge für Nachrichten ist, die auf dem entsprechenden Kommunikationskanal gesendet werden, und das kopierte Arbeitsschlangenelement so konfiguriert ist, dass eine Freigabe ausgewählter, noch nicht fertiggestellter Arbeitsschlangenelemente aus der gemeinsamen Sendeschlange möglich ist.
  14. Kommunikationssystem nach Anspruch 8, wobei mindestens eines von der gemeinsamen Sendeschlange und dem identifizierten Kommunikationskanal so konfiguriert ist, dass mehrere unerledigte Nachrichten zu einem Zeitpunkt möglich sind.
  15. System, umfassend ein Speichermedium oder mehrere Speichermedien, auf welchen einzeln oder in Kombination Anweisungen gespeichert sind, die wenn sie von einem oder mehreren Prozessor(en) ausgeführt werden, zu folgendem führen: Zuleiten mehrerer Arbeitsschlangenelemente zu einer gemeinsamen Sendeschlange in einer Zuleitungsreihenfolge, wobei jedes Arbeitsschlangenelement einen Deskriptor, der zum Identifizieren entsprechender zu sendender Daten konfiguriert ist, und einen Kommunikationskanaldesignator, der zum Identifizieren eines Kommunikationskanals konfiguriert ist, der zum Senden der Daten verwendet wird, umfasst; Senden einer Nachricht, die jedem Arbeitsschlangenelement entspricht, unter Verwendung des identifizierten Kommunikationskanals, wobei die Nachricht die entsprechenden zu sendenden Daten umfasst, wobei die Nachrichten in einer Sendereihenfolge entsprechend der Zuleitungsreihenfolge der Arbeitsschlangenelemente gesendet werden; und Fertigstellen der Arbeitsschlangenelemente in der gemeinsamen Sendeschlange in einer Fertigstellungsreihenfolge, wobei sich die Fertigstellungsreihenfolge auf die Zuleitungsreihenfolge bezieht.
  16. System nach Anspruch 15, wobei jeder Kommunikationskanal ein zuverlässiger Kommunikationskanal ist, der zum Bereitstellen einer zuverlässigen Ende-zu-Ende-Konnektivität zwischen einer sendenden Hostvorrichtung und einer entsprechenden Zielvorrichtung konfiguriert ist.
  17. System nach Anspruch 15, wobei die Fertigstellungsreihenfolge dieselbe wie die Zuleitungsreihenfolge für die mehreren Arbeitsschlangenelemente ist, die zur gemeinsamen Sendeschlange geleitet werden.
  18. System nach Anspruch 15, wobei die Fertigstellungsreihenfolge dieselbe wie die Zuleitungsreihenfolge für Arbeitsschlangenelemente mit demselben Kommunikationskanaldesignator ist.
  19. System nach Anspruch 17, wobei die Anweisungen, wenn sie von einem oder mehreren Prozessor(en) ausgeführt werden, zu den folgenden zusätzlichen Operationen führen, umfassend: Zuteilen einer Stelle in einem entsprechenden Kommunikationskanal-Sendeverlaufsinformationsspeicher und einer Stelle in einem gemeinsamen Sendeschlangen-Sendeverlaufsinformationsspeicher für jede gesendete Nachricht; und Verknüpfen der Stelle im entsprechenden Kommunikationskanal-Sendeverlaufsinformationsspeicher mit der Stelle im gemeinsamen Sendeschlangen-Sendeverlaufsinformationsspeicher für jede gesendete Nachricht, wobei der entsprechende Kommunikationskanal-Sendeverlaufsinformationsspeicher so konfiguriert ist, dass er eine Fertigstellungsreihenfolge sicherstellt, die dieselbe wie die Zuleitungsreihenfolge für Nachrichten ist, die auf dem entsprechenden Kommunikationskanal gesendet werden, und der gemeinsame Sendeschlangen-Sendeverlaufsinformationsspeicher so konfiguriert ist, dass er eine Fertigstellungsreihenfolge sicherstellt, die dieselbe wie die Zuleitungsreihenfolge für die mehreren Arbeitsschlangenelemente ist.
  20. System nach Anspruch 18, wobei die Anweisungen, die, wenn sie von einem oder mehreren Prozessor(en) ausgeführt werden, zu den folgenden zusätzlichen Operationen führen, umfassen: Zuteilen einer Stelle in einem entsprechenden Kommunikationskanal-Sendeverlaufsinformationsspeicher für jede gesendete Nachricht; und Kopieren mindestens eines Abschnitts eines entsprechenden Arbeitsschlangenelements in die zugeteilte Stelle im entsprechenden Kommunikationskanal-Sendeverlaufsinformationsspeicher, wobei der entsprechende Kommunikationskanal-Sendeverlaufsinformationsspeicher so konfiguriert ist, dass er eine Fertigstellungsreihenfolge sicherstellt, die dieselbe wie die Zuleitungsreihenfolge für Nachrichten ist, die auf dem entsprechenden Kommunikationskanal gesendet werden, und das kopierte Arbeitsschlangenelement so konfiguriert ist, dass eine Freigabe ausgewählter, noch nicht fertiggestellter Arbeitsschlangenelemente aus der gemeinsamen Sendeschlange möglich ist.
  21. System nach Anspruch 15, wobei mindestens eines von der gemeinsamen Sendeschlange und dem identifizierten Kommunikationskanal so konfiguriert ist, dass mehrere unerledigte Nachrichten zu einem Zeitpunkt möglich sind.
DE112011106016.5T 2011-12-23 2011-12-23 Gemeinsame Sendeschlange Withdrawn DE112011106016T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067239 WO2013095654A1 (en) 2011-12-23 2011-12-23 Shared send queue

Publications (1)

Publication Number Publication Date
DE112011106016T5 true DE112011106016T5 (de) 2014-09-11

Family

ID=48669292

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011106016.5T Withdrawn DE112011106016T5 (de) 2011-12-23 2011-12-23 Gemeinsame Sendeschlange

Country Status (4)

Country Link
US (1) US10051038B2 (de)
CN (1) CN103999068B (de)
DE (1) DE112011106016T5 (de)
WO (1) WO2013095654A1 (de)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112011106016T5 (de) 2011-12-23 2014-09-11 Intel Corporation Gemeinsame Sendeschlange
US9122515B2 (en) 2012-12-19 2015-09-01 Dell Products L.P. Completion notification for a storage device
US9621633B2 (en) * 2013-03-15 2017-04-11 Intel Corporation Flow director-based low latency networking
US10285248B2 (en) 2014-11-04 2019-05-07 Signify Holding B.V. Transmitter comprising a transmission queue and corresponding source device
US10320918B1 (en) * 2014-12-17 2019-06-11 Xilinx, Inc. Data-flow architecture for a TCP offload engine
KR102309798B1 (ko) * 2015-04-16 2021-10-06 삼성전자주식회사 Sr-iov 기반 비휘발성 메모리 컨트롤러 및 그 비휘발성 메모리 컨트롤러에 의해 큐에 리소스를 동적 할당하는 방법
US9602455B2 (en) 2015-08-07 2017-03-21 Machine Zone, Inc. Scalable, real-time messaging system
US10333879B2 (en) 2015-08-07 2019-06-25 Satori Worldwide, Llc Scalable, real-time messaging system
US9407585B1 (en) * 2015-08-07 2016-08-02 Machine Zone, Inc. Scalable, real-time messaging system
US9319365B1 (en) 2015-10-09 2016-04-19 Machine Zone, Inc. Systems and methods for storing and transferring message data
US9385976B1 (en) 2015-10-09 2016-07-05 Machine Zone, Inc. Systems and methods for storing message data
US9397973B1 (en) 2015-10-16 2016-07-19 Machine Zone, Inc. Systems and methods for transferring message data
FR3043814B1 (fr) * 2015-11-18 2020-01-10 Bull Sas Procede de generation d'un ensemble de donnees definissant un message pour une application contrainte
US10498654B2 (en) 2015-12-28 2019-12-03 Amazon Technologies, Inc. Multi-path transport design
US10148570B2 (en) 2015-12-29 2018-12-04 Amazon Technologies, Inc. Connectionless reliable transport
US9985904B2 (en) 2015-12-29 2018-05-29 Amazon Technolgies, Inc. Reliable, out-of-order transmission of packets
US9985903B2 (en) * 2015-12-29 2018-05-29 Amazon Technologies, Inc. Reliable, out-of-order receipt of packets
CN107231283B (zh) * 2016-03-23 2020-12-18 阿里巴巴集团控股有限公司 消息管理方法及装置、消息预读方法及装置
US9602450B1 (en) 2016-05-16 2017-03-21 Machine Zone, Inc. Maintaining persistence of a messaging system
US10404647B2 (en) 2016-06-07 2019-09-03 Satori Worldwide, Llc Message compression in scalable messaging system
US9608928B1 (en) 2016-07-06 2017-03-28 Machine Zone, Inc. Multiple-speed message channel of messaging system
US9967203B2 (en) 2016-08-08 2018-05-08 Satori Worldwide, Llc Access control for message channels in a messaging system
US10374986B2 (en) 2016-08-23 2019-08-06 Satori Worldwide, Llc Scalable, real-time messaging system
US10305981B2 (en) 2016-08-31 2019-05-28 Satori Worldwide, Llc Data replication in scalable messaging system
US9667681B1 (en) 2016-09-23 2017-05-30 Machine Zone, Inc. Systems and methods for providing messages to multiple subscribers
US10270726B2 (en) 2017-02-24 2019-04-23 Satori Worldwide, Llc Selective distribution of messages in a scalable, real-time messaging system
US10187278B2 (en) 2017-02-24 2019-01-22 Satori Worldwide, Llc Channel management in scalable messaging system
US10447623B2 (en) 2017-02-24 2019-10-15 Satori Worldwide, Llc Data storage systems and methods using a real-time messaging system
CN107589990B (zh) * 2017-10-26 2021-03-26 苏州浪潮智能科技有限公司 一种基于线程池的数据通讯的方法及***
CN112447040B (zh) * 2019-08-27 2022-04-08 北京地平线机器人技术研发有限公司 队列顺序检测方法、装置以及电子设备和介质
US11055130B2 (en) 2019-09-15 2021-07-06 Mellanox Technologies, Ltd. Task completion system
US11822973B2 (en) 2019-09-16 2023-11-21 Mellanox Technologies, Ltd. Operation fencing system
US11876885B2 (en) * 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
US11451493B2 (en) * 2021-01-06 2022-09-20 Mellanox Technologies, Ltd. Connection management in a network adapter
US11595472B2 (en) 2021-01-19 2023-02-28 Mellanox Technologies, Ltd. Controlling packet delivery based on application level information
CN115776434A (zh) * 2021-09-07 2023-03-10 华为技术有限公司 Rdma数据传输***、rdma数据传输方法及网络设备
WO2023040683A1 (zh) * 2021-09-17 2023-03-23 华为技术有限公司 传输数据的方法和输入输出设备
US11792139B2 (en) 2022-01-24 2023-10-17 Mellanox Technologies, Ltd. Efficient packet reordering using hints
US11622004B1 (en) * 2022-05-02 2023-04-04 Mellanox Technologies, Ltd. Transaction-based reliable transport
CN115002047B (zh) * 2022-05-20 2023-06-13 北京百度网讯科技有限公司 一种远程直接数据存取方法、装置、设备以及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5166930A (en) * 1990-12-17 1992-11-24 At&T Bell Laboratories Data channel scheduling discipline arrangement and method
DE19913086A1 (de) 1999-03-23 2000-10-19 Siemens Ag Verfahren und Einrichtung zur Kanalzuweisung für eine breitbandige Funk-Übertragung
WO2004021628A2 (en) 2002-08-29 2004-03-11 Broadcom Corporation System and method for network interfacing
CN100472450C (zh) * 2002-08-29 2009-03-25 美国博通公司 多网络环境中用于网络连接的***和方法
WO2004036381A2 (en) 2002-10-18 2004-04-29 Broadcom Corporation System and method for receive queue provisioning
US7295565B2 (en) * 2002-12-24 2007-11-13 Sun Microsystems, Inc. System and method for sharing a resource among multiple queues
US7089378B2 (en) * 2003-03-27 2006-08-08 Hewlett-Packard Development Company, L.P. Shared receive queues
US20040264475A1 (en) * 2003-06-30 2004-12-30 The Nature Of The Conveyance Class of high throughput MAC architectures for multi-channel CSMA systems
US7719967B2 (en) * 2005-09-28 2010-05-18 Netapp, Inc. Cumulative TCP congestion control
CN100578998C (zh) 2006-10-31 2010-01-06 华为技术有限公司 高速下行共享信道编码复用方法及***
CN101350940B (zh) * 2007-07-17 2013-03-20 大唐移动通信设备有限公司 高速下行共享信道的共享控制信道资源分配方法及设备
DE112011106016T5 (de) 2011-12-23 2014-09-11 Intel Corporation Gemeinsame Sendeschlange

Also Published As

Publication number Publication date
CN103999068A (zh) 2014-08-20
CN103999068B (zh) 2016-11-23
WO2013095654A1 (en) 2013-06-27
US20140310369A1 (en) 2014-10-16
US10051038B2 (en) 2018-08-14

Similar Documents

Publication Publication Date Title
DE112011106016T5 (de) Gemeinsame Sendeschlange
DE60027404T2 (de) Kreditbasiertes flusskontrollverfahren
DE60111551T2 (de) Mechanismus zur vervollständigung von nachrichten im speicher
DE69836778T2 (de) Vorrichtung und Verfahren zur Fernpufferspeicherzuordnung und Verwaltung für Nachrichtenübertragung zwischen Netzknoten
DE112020002496T5 (de) System und verfahren zur erleichterung eines effizienten host-speicherzugriffs von einer netzwerkschnittstellensteuerung (nic)
DE60305378T2 (de) Verfahren zum Weitergeben von einem Netzwerkstapel
US9503383B2 (en) Flow control for reliable message passing
DE3586431T2 (de) Lokales netzwerk fuer ein numerisches datenverarbeitungssystem.
DE112013000839B4 (de) Datenübertragungsprotokoll für verteilte Informationstechnologie-Architekturen
DE60117485T2 (de) Verfahren und Vorrichtung zur Pufferverwaltung
DE60031263T2 (de) Umhüllungsverfahren für protokolldateneinheiten
DE60029221T2 (de) Begrenztes automatisches wiederholungsaufforderungsprotokoll für rahmenbasierte kommunikationskanäle
DE69735936T2 (de) Seriendatenschnittstellenverfahren und vorrichtung #
DE3852378T2 (de) Mechanismus und Verfahren zur entgegengesetzten Flussteuerung.
DE112013000411T5 (de) Benachrichtigung durch Netzwerkelement über Paketverluste
DE112011102415T5 (de) Registerzugriff in einer verteilten virtuellen Brückenumgebung
US20130054526A1 (en) Multicast database replication
DE202021103381U1 (de) Computerlesbares Medium und Systeme zur Implementierung eines regional zusammenhängenden Proxy-Dienstes
DE3853337T2 (de) Mechanismus und Verfahren zur Fernverwaltung von Speichern.
DE102015112634A1 (de) Unterstützen von RMA-API über aktive Message
US20150312384A1 (en) Managing sequence values with added headers in computing devices
DE102021109482A1 (de) SYSTEM UND VERFAHREN ZUR REGELUNG VON NVMe-oF-BEFEHLSANFRAGEN UND DATENFLUSS ÜBER EIN NETZWERK MIT UNGLEICHMÄßIGER GESCHWINDIGKEIT
DE112019007502T5 (de) Zuordnen von nvme-over-fabric-paketen mithilfe von virtuellen ausgangswarteschlangen
DE112012005625T5 (de) Stromsteuermechanismus für einen Speicherserver
DE112019007406T5 (de) Weiterleitung von nvsvse-overfabric-paketen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee