-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung betrifft einen Host-Kanaladapter, der für die Kommunikation
mit Empfangs- bzw. Zielkanaladaptern ausgebildet ist, und betrifft
die Verwaltung von Warteschlangenpaare, die bei der Übertragung
von Datenpaketen in einem InfiniBand-Server-System verwendet werden.
-
HINTERGRUND
DER ERFINDUNG
-
Die
Netzwerktechnologie hat Verbesserungen bei Server-Architekturen
und deren Gestaltung erreicht im Hinblick auf das Bereitstellen
von Servern, die robuster und zuverlässiger beim Einsatz in kritischen
Netzwerkanwendungen sind. Insbesondere die Anwendung von Servern
zur Abarbeitung von Klientenanforderungen führte zu der Notwendigkeit, dass
Server eine äußerst hohe
Zuverlässigkeit
besitzen, um sicherzustellen, dass das Netzwerk betriebsfähig bleibt.
Daher gibt es ein großes
Interesse an der Serverzuverlässigkeit,
an der Zugreifbarkeit und an der Bereitstellung von Diensten.
-
Ferner
wurden bei Prozessoren, die in Servern eingesetzt werden, wesentliche
Fortschritte erzielt, wobei die Mikroprozessorgeschwindigkeit und die
Bandbreite die Kapazität
der angeschlossenen Eingangs/Ausgangs-(I/O)-Busse übertroffen
haben, wodurch der Durchsatz des Servers durch die Buskapazität beschränkt ist.
Folglich wurden unterschiedliche Server-Standards vorgeschlagen,
um zu versuchen, die Leistungsfähigkeit
des Servers im Hinblick auf die Adressierung, die Prozessorkombination
und eine hohe I/O-Geschwindigkeit
zu verbessern.
-
Diese
unterschiedlichen vorgeschlagenen Server-Standards führten zu
der Entwicklung der Infini-Band-Architekturspezifikation (Ausgabe
1.0), die von der InfiniBand-Vertriebsorganisation
angewendet wird. Die InfiniBand-Architekturspezifikation spezifiziert
eine Netzwerkverbindung mit hoher Geschwindigkeit zwischen zentralen
Recheneinheiten, Periphereinheiten und Schaltern innerhalb eines
Serversystems. Somit bezeichnet der Beg riff „InfiniBand-Netzwerk" ein Netzwerk innerhalb
eines Server-Systems. Die InfiniBand-Architekturspezifikation spezifiziert
sowohl I/O-Aktivitäten
als auch die Kommunikation zwischen Prozessoren (IPC).
-
Ein
wesentliches Merkmal der InfiniBand-Architekturspezifkation ist
die vorgeschlagene Implementierung als Hardware der Transportschichtdienste,
die in bestehenden Netzwerkprotokollen, etwa den Protokollen auf
TCP/IP-Basis vorhanden sind. Die Implementierung auf Hardwarebasis
von Transportschichtdiensten bringt den Vorteil, dass die Verarbeitungsanforderungen
der zentralen Recheneinheit verringert werden (d. h. „entlastet"), so dass das Betriebssystem
des Server-Systems entlastet wird.
-
Jedoch
können
willkürliche
Hardwareimplementierungen zu äußerst kostenintensiven
Hardwareausgestaltungen führen.
Ein Host-Kanaladapter (HCA) verwaltet mehrere Warteschlangenpaare (QP),
die von Anwenderanwendungen an InfiniBand-Netzwerkknoten für die Datenkommunikation verwendet
werden. Nachteiligerweise kann eine sehr große Anzahl an Warteschlangenpaaren
erzeugt werden, wodurch der HCA unter Umständen große Mengen an Ressourcen bereitstellen
muss, um die große
Anzahl an Warteschlangenpaare zu verwalten.
-
ÜBERBLICK ÜBER DIE
ERFINDUNG
-
Es
besteht ein Bedarf für
eine Anordnung, die es ermöglicht,
dass ein Host-Kanaladapter in einer effizienten und ökonomischen
Weise eingerichtet werden kann.
-
Ferner
besteht ein Bedarf für
eine Anordnung, die es ermöglicht,
dass ein Host-Kanaladapter mehrere
Warteschlangenpaare ohne wesentlichen Aufwand an Ressourcen verwaltet.
-
Diese
und weitere Erfordernisse werden mittels der vorliegenden Erfindung
erreicht, wobei ein Host-Kanaladapter für das effiziente Verwalten
von mehreren Warteschlangenpaaren ausgebildet ist, indem Warteschlangenpaare
mit ähnlichen
Eigenschaften in Warteschlangentabellen komprimiert werden, die
ausgebildet sind, um komprimierte Warteschlangenpaareinträge mit gemeinsamen
Eigenschaften bzw. Attributen zu speichern.
-
Gemäß einem
Aspekt der vorliegenden Erfindung wird ein Verfahren in einem Host-Kanaladapter bereitgestellt.
Das Verfahren umfasst das Empfangen einer Anforderung zum Erzeugen
eines neuen Warteschlangenpaares. Das Verfahren umfasst ferner das
Identifizieren einer aus mehreren Warteschlangenpaartabellen durch
Bestimmen einer Übereinstimmung
zwischen mindestens einer ausgewählten
Eigenschaft für
das neue Warteschlangenpaar mit entsprechenden gemeinsamen Eigenschaften bzw.
Attributen der Warteschlangenpaartabellen, wobei jede Warteschlangenpaartabelle
komprimierte Warteschlangenpaareinträge aufweist, die Warteschlangenpaare
mit dem entsprechenden gemeinsamen Attribut repräsentieren. Das Verfahren umfasst ferner
das Speichern eines neuen komprimierten Warteschlangenpaareintrags
mit vorgeschriebenen Attributen des neuen Warteschlangenpaars, die
sich von den entsprechenden gemeinsamen Attribut unterscheiden,
in der einen gemeinsamen Warteschlangenpaartabelle mit dem entsprechenden
gemeinsamen Attribut, das mit dem mindestens einen ausgewählten Attribut übereinstimmt.
-
In
einem weiteren Aspekt der vorliegenden Erfindung wird ein Host-Kanaladapter
bereitgestellt. Der Host-Kanaladapter umfasst eine Warteschlangenpaarattributdatenbank
und ein Warteschlangenpaarattributverwaltungsmodul. Die Warteschlangenpaarattributdatenbank
ist zum Speichern vorgeschriebener Attribute neuer Warteschlangenpaare ausgebildet,
wobei die Warteschlangenpaarattributdatenbank mehrere Warteschlangenpaartabellen
mit entsprechenden gemeinsamen Attributen aufweist, wobei jede Warteschlangenpaartabelle
ausgebildet ist, komprimierte Warteschlangenpaareinträge, die Warteschlangenpaare
mit dem entsprechenden gemeinsamen Attribut repräsentieren, zu speichern. Das
Wartepaarattributverwaltungsmodul ist ausgebildet, um ein neues
Warteschlangenpaar als einen neuen komprimierten Warteschlangenpaareintrag
in einer identifizierten Warteschlangenpaartabelle mit dem entsprechenden
gemeinsamen Attribut, das mit mindestens einem ausgewählten Attribut
des neuen Warteschlangenpaares übereinstimmt,
zu speichern, wobei der neue komprimierte Warteschlangenpaareintrag
vorgeschriebene Attribute des neuen Warteschlangenpaars aufweist,
die sich von dem entsprechenden gemeinsamen Attribut unterscheiden.
-
Weitere
Vorteile der Erfindung sind zum Teil in der folgenden Beschreibung
dargelegt und werden für
den Fachmann zum Teil beim Studium des Folgenden offenkundig oder
können
durch Anwenden der Erfindung erkannt werden. Die Vorteile der vorliegenden
Erfindung können
durch Umsetzungen und Kombinationen, die insbesondere in den angefügten Patentansprüchen dargelegt
sind, realisiert und erreicht werden.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Es
wird auf die angefügten
Zeichnungen verwiesen, in denen Elemente mit den gleichen Bezugszeichen
durchwegs gleiche Elemente bezeichnen und wobei:
-
1 eine Ansicht ist, die
einen Host-Kanaladapter darstellt, der zum Erzeugen von Übertragungspaketen
gemäß einer
Ausführungsform
der vorliegenden Erfindung ausgebildet ist;
-
2 eine Ansicht ist, die
detaillierter die Warteschlangenpaarattributdaten aus 1 gemäß einer Ausführungsform
der vorliegenden Erfindung zeigt;
-
3 eine Ansicht ist, die
das Verfahren zum Speichern eines neuen Warteschlangenpaares in
der Warteschlangenpaarattributdatenbank gemäß einer Ausführungsform
der vorliegenden Erfindung zeigt.
-
BESTE ART
UND WEISE ZUM AUSFÜHREN
DER ERFINDUNG
-
1 ist eine Blockansicht,
die einen Host-Kanaladapter (HCA) 12 zeigt, der zum Erzeugen
und Senden von Paketen gemäß einer
Ausführungsform
der vorliegenden Erfindung ausgebildet ist. Der HCA 12,
der mit der InfiniBand-Architekturspezifikation kompatibel ist,
ist so eingerichtet, dass sichergestellt ist, dass Hardwareressourcen
in effizienter Weise ausgenutzt werden, indem Sendepakete gemäß einer
Reihenfolge nach Prioritäten
erzeugt werden. Ferner ermöglicht
der offenbarte HCA 12 Flexibilität dadurch, dass eingebettete
Prozesse ohne Unterbrechung des Datenverkehrstroms hinzugefügt werden
können.
Somit kann der HCA 12 in einer ökonomischen Weise mit minimaler
Komplexität im
Vergleich zu konventionellen Implementierverfahren eingerichtet
werden.
-
Ein
Problem bei herkömmlichen
Anordnungen zum Einrichten des HCA 12 gemäß der InfiniBand-Architekturspezifikation
besteht darin, dass der Transportschichtdienst zuerst auszuführen ist,
beispielsweise durch Erstellen eines Transportschichtvorspannes,
Erzeugen einer Paketsequenznummer, Bestätigen der Art des Dienste (beispielsweise
zuverlässige Verbindung,
zuverlässiges
Datagramm, unzuverlässige
Verbindung, unzuverlässiges
Datagramm, etc.), und andere Transportschichtaktivitäten. Sobald
die Transportschichtaktivitäten
abgeschlossen sind, würde
das Paket an den Verbindungsschichtdienst zur Ausführung von
Verbindungsschichtaktivitäten
gesendet, wozu die Zuordnung der Dienstschicht bzw. Serviceebene
und der virtuellen Verbindungsstrecke, die Erzeugung des Verbindungsschichtstromsteuerpakets,
die Verbindungsschichtübertragungskreditüberprüfung und
andere Aktivitäten
gehören.
Obwohl diese herkömmliche
Art der Einrichtung den Vorteil aufweist, dass in genauer Weise
den Netzwerkschichten bzw. Ebenen gefolgt wird, die in der InfiniBand-Architekturspezifikation
spezifiziert sind, erfordert eine derartige Anordnung eine beträchtliche
Menge an Hardware. Insbesondere erfordert die Transportschicht im
Allgemeinen eine höhere
Verarbeitungsleistung als die Verbindungsschicht, da die Transportschicht
eine größere Anzahl
komplexer Aktivitäten
beinhaltet. Somit gibt es einen Bedarf, derart, dass die Implementierung
der Transportschicht als Hardware nicht zu einem beträchtlich
komplexen Hardwaresystem führt. Ferner
gibt es Bedenken hinsichtlich der unnötigen Verschwendung von Ressourcen
der Transportschicht für
Aufgaben mit geringer Priorität.
-
Gemäß der offenbarten
Ausführungsform werden
die Verbindungsschichtaktivitäten
bzw. Operationen auf der Grundlage des Wunsches unterteilt, die
Prioritäten
von zu sendenden Datenpaketen zu bestimmen. Insbesondere umfasst
der HCA 12 aus 1 ein
Vorverbindungsmodul, das ausgebildet ist, eine Priorität von empfangenen
WQE's zu bestimmen,
und umfasst ein Vorverbindungsmodul, das ausgebildet ist, ein Datenpaket
für das
Versenden auf dem Netzwerk vorzubereiten. Das Vorverbindungsmodul 40 ordnet
die WQE's gemäß den Prioritäten an,
die von dem Vorverbindungsmodul bestimmt wurden, und gibt die WQE's in der vorbestimmten
Reihenfolge an ein Transportdienstmodul 42 aus, das ausgebildet
ist, die geeigneten Transportschichtvorspann- bzw. Kopfbereiche
für die
WQE's auf der Grundlage
der zugehörigen
Warteschlangenpaarattribute zu erzeugen. Anders ausgedrückt, das
Vorverbindungsmodul 40 verhindert, dass das Transportdienstmodul 42 Ressourcen
an WQE's mit geringer
Priorität
verschwendet oder WQE's
mit hoher Priorität
innerhalb des Transportschichtprozesses blockiert. Somit beinhalten
Verbindungen mit höherer Priorität eine verbesserte
Dienstleistung in der Transportschicht auf Grund des HCA's.
-
Der
HCA 12, der beispielsweise als eine anwendungsspezifische
integrierte Schaltung eingerichtet ist, umfasst ein Vorverbindungsmodul 40,
ein Transportservices- bzw. Dienstmo dul 42, ein der Verbindung
nachgeschaltetes Modul 44 und ein Mediumzugriffssteuerungs(MAC)
Modul 46. Der HCA 12 besitzt ferner einen lokalen
Zugriff auf einen Speicher 48, der zur Speicherung von
Transportdaten ausgebildet ist, und zu Überlaufpuffern, die nachfolgend-beschrieben
sind.
-
Das
Vorverbindungsmodul 40 umfasst einen Arbeitswarteschlangenelement-FIFO 50,
FIFO's 52 für die virtuelle
Verbindung, ein Vorverbindungsprozessmodul 54, eine Zuordnungstabelle 56 von
der Serviceebene zu einer virtuellen Verbindung (SL-VL), eine Unterscheidungstabelle 58 für die virtuelle
Verbindung (VL) und ein Unterscheidungsmodul 60 für die virtuelle
Verbindung (VL).
-
Der
HCA 12 ist so ausgebildet, um Daten von einer zentralen
Recheneinheit (CPU) in Form von Arbeitswarteschlangenelementen (WQE's) zu empfangen,
die in dem WQE-FIFO 50 gespeichert sind. Jedes WQE spezifiziert
eine entsprechende Anforderung von einer Anwenderanwendung, die
von der CPU (d. h. „Anforderer") für eine entsprechende
vorgeschriebene Aktion ausgeführt
wird, die von einem Ziel-InfiniBand-Netzwerkknoten (d. h. „der antwortenden
Partei), beispielsweise ein Ziel der Verbindung auszuführen ist.
Das Zusammenwirken des Anforderers und der antwortenden Partei ist über ein
Warteschlangenpaar (QP) spezifiziert, wobei ein Warteschlangenpaar
eine Sendearbeitswarteschlange und eine Empfangsarbeitswarteschlange
umfasst.
-
Das
WQE umfasst Service- bzw. Dienstebenen-(SL) Information und einen
Zeiger zur der Position der eigentlichen Nachricht in dem Systemspeicher 48.
Die InfiniBand-Architekturspezifikation
definiert ein Serviceebenen-(SL) Attribut, das es ermöglicht, dass
ein in dem InfiniBand-Netzwerk 10 versendetes Paket auf
einer von 16 verfügbaren
Serviceebenen operiert. Somit kann der Anforderer eine verfügbare Serviceebene
(beispielsweise basierend auf der Qualität des Dienstes, der Priorität, etc.)
auf der Grundlage einer ausgewählten
Priorität
des WQE auswählen.
-
Das
Vorverbindungsmodul 40 liefert sowohl die Zuordnung der
Serviceebene zu der virtuellen Verbindung (SL-VL-Zuordnung) und
die Unterscheidung bzw. Arbitrierung der virtuellen Verbindung.
Insbesondere ermöglichen
virtuelle Verbindungen, die in der InfiniBand-Architekturspezifikation definiert sind, dass
mehrere logische Ströme
auf einer einzelnen physikalischen Verbindung eingerichtet werden
können,
wobei eine Steuerung des Verbin dungsdatenstrompegel auf einer virtuellen
Verbindung durchgeführt
werden kann, ohne andere virtuelle Verbindungen zu beeinflussen.
Das Vorverbindungsprozessmodul 54 ist so ausgebildet, um
die Zuordnungstabelle 56 für die Serviceebene und der
virtuellen Verbindung zu verwalten und aufrecht zu erhalten. Insbesondere
ruft das Vorverbindungsprozessmodul 54 ein WQE aus dem
WQE FIFO 50 ab und bestimmt die entsprechende virtuelle
Verbindung auf der Grundlage der Serviceebene, die in dem WQE spezifiziert
ist. Nach Identifizieren der geeigneten virtuellen Verbindung für das abgerufene
WQE sendet das Vorverbindungsprozessmodul 54 das WQE an
den entsprechenden FIFO 52 für virtuelle Verbindungen.
-
Das
Vorverbindungsmodul 40 umfasst FIFO's 52a, 52b, 52c, 52d, 52e und 52f für virtuelle Verbindungen
zum Speichern von WQE's
auf der Grundlage der Zuordnung, die von dem Vorverbindungsprozessmodul 54 vorgenommen
wird. Beispielsweise wird der FIFO 52a für virtuelle
Verbindungen verwendet, um WQE's
zu speichern, die mit eingebetteten Prozessoraktivitäten verknüpft sind,
beispielsweise mit Verbindungsschichtsteuerpaketen und der Handhabung
von Fehlerbedingungen. Anders ausgedrückt, wenn eine vorgeschriebene
Operation nicht als Hardware eingerichtet ist, wird die Anforderung
zu einer eingebetteten Prozessorwarteschlange 78 für die weitere
Abarbeitung durch einen eingebetteten Prozessor 80, der
nachfolgend beschrieben wird, gesendet; somit besitzt der eingebettete
Prozessor 80 seine eigene zugeordnete Warteschlange 52a,
um Pakete in den Datenstrom des Ausgangsdatenverkehrs auszugeben.
Der FIFO 52b für
virtuelle Verbindungen wird zum Speichern von WQE's verwendet, die
mit der Verwaltung der Datenverkehrs verknüpft sind. Die FIFO's 52c, 52d, 52e und 52f für virtuelle
Verbindungen werden verwendet, um WQE's zu speichern, die mit entsprechend zugeordneten
virtuellen Verbindungen verknüpft sind.
Obwohl die vorliegende Ausführungsform
die Verwendung von vier zugeordneten virtuellen Verbindungen zeigt,
können
weitere FIFO's für virtuelle
Verbindungen für
zusätzliche
zugeordnete virtuelle Verbindungen hinzugefügt werden.
-
Das
VL-Unterscheidungsmodul 60 ist als eine Zustandsmaschine
mit Registern eingerichtet und ist ausgebildet, um die VL-Unterscheidungstabelle 58 zur
Unterstützung
der virtuellen Verbindungen einschließlich des Initialisierens,
der Verwaltung und des Entfernens der virtuellen Verbindungen zu verwalten.
Das VL-Unterscheidungsmodul 60 bestimmt ferner, welche
virtuelle Verbindung zu unterstützen
ist, und gibt die WQE's
von den FIFO's 52 für virtuelle
Verbindungen auf der Grundlage der bestimmten Priorität der virtuellen
Verbindun gen aus. Beispielsweise speichert der FIFO 52b für virtuelle Verbindungen
typischerweise einen Verwaltungsdatenverkehr (hohe Priorität), und
daher würde
das VL-Unterscheidungsmodul 60 typischerweise
den FIFO 52 für
virtuelle Verbindungen leeren, bevor andere FIFO's 52c, 52d, 52e oder 52f für virtuelle
Verbindungen unterstützt
werden. Das VL-Unterscheidungsmodul 60 gibt dann selektiv
die WQE's aus den FIFO's 52c, 52d, 52e oder 52f auf
der Grundlage der gewichteten Prioritäten aus, die in entsprechenden Gewichtstabellen
innerhalb der VL-Unterscheidungstabelle 58 gespeichert
sind.
-
Somit
gibt das Vorverbindungsmodul 40 die WQE's in einer vorgeschriebenen Reihenfolge
auf der Grundlage einer bestimmten Priorität der WQE's, beispielsweise auf der Grundlage
zugeordneter virtueller Verbindungen, oder abhängig davon, ob das WQE für einen
eingebetteten Prozess, den Verwaltungsdatenverkehr oder für Datenstromsteuerungsverkehrsdaten
dient, aus.
-
Das
Transportdienstmodul 42 ist ausgebildet, um Transportdienste
einschließlich
der Initialisierung, der Verwaltung und des Beendens von Warteschlangenpaaren
zu verwalten. Insbesondere umfasst der HCA 12 einen FIFO 62 für die Warteschlangenpaarinitialisierung,
der ausgebildet ist, Warteschlangenpaarbefehle, die von einem Kommunikationsverwaltungsmittel
empfangen werden, zu speichern. Das Kommunikationsverwaltungsmittel
dient dazu, Transportverbindungen zu erstellen und zu beenden: das
Kommunikationsverwaltungsmittel steht mit einem Teilnetzverwalter
in Verbindung, um die Transportverbindungen für den HCA 12 zu errichten. Ferner
verwenden die Kommunikationsverwaltungsmittel auf jeder Seite während der
Einrichtung einer Verbindung einen Umleitungsservice (der im Weiteren
mit Bezug auf ein Umleitungsserviceuntermodul 68a beschrieben
wird), um die Transportverbindungen einzurichten, anders als dies
bei einem konventionellen Transportschichtdienst der Fall ist.
-
Das
Transportdienstmodul 42 umfasst eine Warteschlangenpaarattributdatenbank 64 und
ein Warteschlangenpaarattributverwaltungsmodul 66. Das
Warteschlangenpaarattributverwaltungsmodul 66 ist ausgebildet,
um die Warteschlangenpaarbefehle in dem FIFO 62 für die Warteschlangenpaarinitialisierung
zu verarbeiten und um die Warteschlangenpaarattributdatenbank 64 auf
der Grundlage der empfangenen Warteschlangenpaarbefehle zu aktualisieren.
Beispielsweise speichert die Warteschlangenpaarattributdatenbank 64 Informationen,
die sich auf die Nummer des Quellenwarteschlangenpaares, die Nummer
eines Zielwarteschlangenpaares und möglicherweise auf ein Quellenmittel
und ein Zielmittel beziehen. Somit beinhaltet die Warteschlangenpaarattributdatenbank 64 alle
Informationen, die notwendig sind, um die unterschiedlichen Transportdienste
einschließlich
eines zuverlässigen
Verbindungsdienstes, eines zuverlässigen Datagrammdienstes, eines
unzuverlässigen
Verbindungsdienstes, eines unzuverlässigen Datagrammdienstes und eines
Rohdatagrammdienstes zu unterstützen.
Weitere Details, die die Speicherung von Warteschlangenpaarattributen
in der Warteschlangenpaarattributdatenbank 64 betreffen,
sind im Weiteren mit Bezug zu den 2 und 3 beschrieben.
-
Das
Warteschlangenpaarattributverwaltungsmodul 66 verwaltet
die Transportdienste durch Aktualisieren der Warteschlangenpaarattributdatenbank 64 während der
Kommunikation zwischen lokalen und entfernten Kommunikationsmitteln,
beispielsweise wenn Paketsequenznummern beim Austausch von Nachrichten
zwischen den lokalen und entfernten Kommunikationsmitteln größer werden.
-
Das
Warteschlangenpaarattributverwaltungsmodul 66 umfasst ferner
Servicesubmodule 68, die jeweils zur Verwaltung einer entsprechenden Transportserviceart
auf der Grundlage eines entsprechenden WQE, das von dem Vorverbindungsmodul 40 empfangen
wurde, ausgebildet ist. Beispielsweise ist das Umleitungsservicesubmodul 68a ausgebildet, um
die Umleitungsdienste während
der Verbindungseinrichtung zu verwalten oder um Warteschlangenpaare
zu verwalten, die mit Verwaltungsvorgängen mit Netzwerkverwaltern
verknüpft
sind, die beispielsweise den Rohdatagrammdienst verwenden. Das durch
CPU unterstützte
Servicesubmodul 68b ist ausgebildet, um Warteschlangenpaare
auf der Grundlage eingebetteter Prozessoroperationen unter Anwendung
des eingebetteten FIFO's
52a für
virtuelle Verbindungen zu verwalten; somit ermöglicht es das CPU unterstützte Servicesubmodul 68b,
eine Koordination zwischen den lokalen und entfernten eingebetteten
Prozessen zu erreichen; ferner ermöglicht die Implementierung
des CPU unterstützten
Servicesubmoduls 68b in Verbindung mit dem eingebetteten
FIFO 52a für
virtuelle Verbindungen, dass Nachrichten erneut gesendet werden,
wenn eine Anforderung für
ein erneutes Senden von dem entfernten Kommunikationsmittel empfangen
wird. Das Servicesubmodul 68c für zuverlässige Verbindung (RC) und das
Servicesubmodul 68d für
unzuverlässige Verbindung
(UC) sind so ausgebildet, um Warteschlangenpaare zu verwalten, die
mit Transportdiensten für
die zuverlässige
Verbindung bzw. die unzuverlässige
Verbindung verknüpft
sind. Obwohl dies nicht gezeigt ist, umfasst das Warteschlangenpaarattributver waltungsmodul 66 auch
Submodule 68 zum Verwalten zuverlässiger und unzuverlässiger Datagrammdienste
und eines Rohdatagrammdienstes.
-
Somit
leitet das Transportdienstmodul 42 beim Empfang eines WQE
von dem Vorverbindungsmodul 40 das WQE zu dem geeigneten
Submodul 68 für
die weitere Verarbeitung zu (beispielsweise ein WQE für einen
RC-Service, der von dem RC-Servicesubmodul 68c abgearbeitet
wird). Das WQE enthält
Serviceebenen- (SL) Informationen und einen Zeiger zu der Stelle
der tatsächlichen
Nachricht in dem Systemspeicher 48. Das Submodul 68 analysiert
beim Empfang des entsprechenden WQE dieses und entnimmt aus dem
WQE den Zeiger, der die Speicherstelle für die Transportdaten kennzeichnet (d.
h. die Nutzdaten für
die Transportschicht). Das Submodul 68 führt einen
DMA-Abruf der Transportdaten durch, aktualisiert die geeigneten
Warteschlangenpaarattribute innerhalb der Warteschlangenpaarattributdatenbank 64 und
erzeugt und speichert in dem externen Speicher 48 einen
Transportschichtvorspann für
das WQE in einem entsprechenden Transportformat; beispielsweise
kann das Submodul 68a einen Rohtranspartvorspann erzeugen,
wohingegen die Module 68c oder 68d einen Transportvorspann
gemäß dem Dienst
für eine
zuverlässige
Verbindung oder dem Dienst für
eine unzuverlässige Verbindung
erzeugen können.
-
Das
Submodul 68 erzeugt dann einen Vorspannzeiger (p1), der
die Position des Transportschichtvorspanns kennzeichnet. Das Submodul 68 sendet
dann den Nutzdatenzeiger (p2) und den Vorspannzeiger (p1) als eine
Paketanforderung 90 zu dem der Verbindung nachgeschalteten
Modul 44, wodurch das der Verbindung nachgeschaltete Modul 44 das
Transportpaket für
die Übertragung
auf der Grundlage der zugeleiteten Zeiger erstellen kann. Alternativ
kann das Submodul 68 einen Datenrahmenzeiger für eine Systemspeicherstelle
erzeugen, in der der Transportschichtrahmen einschließlich des Transportschichtvorspanns
und der Transportdaten gespeichert ist. Bei Bedarf kann das Submodul 68 auch
den Transportschichtrahmen (einschließlich des Transportschichtvorspanns
und der Transportdaten) zu dem der Verbindung nachgeschalteten Modul weiterleiten.
Während
in den externen Speicher geschrieben wird, kann alternativ die CPU
Leerräume am
Beginn der Daten belassen, so dass die eigentliche Vorspanninformation,
die in den Modulen 68 erzeugt wird, in dem entsprechenden
leeren Speicherplatz gespeichert werden kann. Der Zeiger, der zu dem
der Verbindung nachgeschalteten Modul 44 weitergeleitet
wird, kann derjenige Zeiger sein, der auf den Anfang des Datenrahmens
in dem externen Speicher zeigt.
-
Das
der Verbindung nachgeschaltete Modul 44 ruft in Reaktion
auf den Empfang der Transportschichtinformation (beispielsweise
des Transportschichtrahmens, der Paketanforderung, etc.) den Transportschichtvorspann
und die Transportschichtnutzdaten aus dem Systemspeicher 48 ab,
um das Übertragungspaket
zu erzeugen und in einem Sende-FIFO 70 speichern. Insbesondere
umfasst das der Verbindung nachgeschaltete Modul 44 ferner
ein Verbindungsschichtsteuermodul 72, das ausgebildet ist,
das Übertragungspaket
zu erzeugen, indem Verbindungsschichtfelder (beispielsweise lokale
und globale Vorspannbereiche zum Weiterleiten, zyklische Redundanzprüf-(CRC)
Felder, etc.) erzeugt werden, das Übertragungspaket in dem Sende-FIFO 70 gespeichert
wird und die Verbindungsschichtsteueroperationen gemäß der InfiniBand-Architekturspezifikation
ausgeführt
werden. Sobald das Übertragungspaket
erzeugt ist, werden die Zeiger zu dem freien Pufferverwalter 76 weitergeleitet,
der nachfolgend beschrieben ist.
-
Das
Verbindungsschichtsteuermodul 72 gibt die Übertragungspakete
gemäß einer
Datenstromsteuerung auf Kreditbasis aus. Insbesondere überwacht
das Verbindungsschichtsteuermodul 72 die verfügbaren Kredite
für das Übertragen
eines Übertragungspakets
auf der zugeordneten virtuellen Verbindung. Insbesondere werden
Kredite auf Basis einer virtuellen Verbindung verwendet, wobei ein
Empfänger
einen Kredit auf der Grundlage von Paketen erteilt, die von einem
Puffer für
eine eingehende virtuelle Verbindung genommen werden; die Kredite werden
dem Sender zugeleitet, wodurch dieser die Datenstromsteuerung bewältigen kann.
Wenn somit das Verbindungsschichtsteuermodul 72 bestimmt, dass
eine identifizierte virtuelle Verbindung eine nicht ausreichende
Anzahl an Krediten besitzt, verzögert das
Verbindungsschichtsteuermodul 72 die Übertragung des entsprechenden Übertragungspakets,
bis eine ausreichende Anzahl an Krediten empfangen ist. Wenn die
virtuelle Verbindung eine ausreichende Anzahl an Krediten aufweist,
leitet das Verbindungsschichtsteuermodul 72 das Übertragungspaket
an das MAC-Modul 46 für
die Versendung weiter.
-
Das
MAC-Modul 46 ist so ausgebildet, um das in den Sende-FIFO 70 gespeicherte Übertragungspaket
gemäß der InfiniBand-Architekturspezifikation
auszugeben. Insbesondere umfasst das MAC-Modul 46 ein Übertragungsmodul 74,
einen Verwalter 76 für
freie Puffer, eine eingebettete Prozessoreingangswarteschlange 78 und
einen eingebetteten Prozessor 80 mit einem Verbindungssteuerpaketaufbaumodul 82.
Das Übertragungsmodul 74 ist
so ausgebildet, um Mediumzugriffssteuervorgänge und optional Aktivitäten des
Sen der/Empfängers der
physikalischen Schicht zur Übertragung
des Übertragungspakets
auf dem InfiniBand-Netzwerk 10 auszuführen.
-
Der
Verwalter 76 für
freie Puffer ist so aufgebaut, um verfügbaren Platz aus dem externen
Speicher 48 freizugeben, sobald das Übertragungspaket erfolgreich
von der antwortenden Partei empfangen wurde. Insbesondere werden
die Speicherzeiger für ein Übertragungspaket
von dem der Verbindung nachgeschalteten Modul 44 gesendet,
sobald das Übertragungspaket
erstellt wurde; wenn eine antwortende Partei eine Nachricht sendet,
dass das Übertragungspaket
gemäß einem
zuverlässigen
Verbindungsservice erneut zu senden ist, kann das Übertragungspaket
von dem der Verbindung nachgeschalteten Modul 44 regeneriert
und erneut der antwortenden Partei zugesendet werden. Sobald das Übertragungspaket
erfolgreich empfangen wurde, können die
Datenrahmenzeiger für
die Verwendung durch ein weiteres Mittel freigegeben werden.
-
Die
Datenstromsteuerung wird von dem eingebetteten Prozessor 80 auf
der Grundlage des Empfangs von Informationen von der eingebetteten Prozessoreingangswarteschlange 78 ausgeführt: insbesondere
verwendet das Datenstromsteuerprotokoll gemäß der InfiniBand-Architekturspezifikation eine
Datenstromsteuerung auf Kreditbasis. Der eingebettete Prozessor 80 erzeugt
Verbindungsstromdatensteuerpakete unter Anwendung des Verbindungsdatenstromsteuerpaketaufbaumoduls 82 auf
der Grundlage von Nachrichten, die in der eingebetteten Prozessoreingangswarteschlange 78 gespeichert
sind. Der eingebettete Prozessor 80 schreibt das Verbindungsdatenstromsteuerpaket
in den externen Speicher 48; der eingebettete Prozessor 80 erzeugt
dann ein WQE, das den zugeordneten Vorgang enthält und erzeugt einen Zeiger,
der die Stelle eines Datenstromsteuerpakets in dem FIFO 52a des
eingebetteten Prozessors für
virtuelle Verbindungen kennzeichnet. Das Verbindungsdatenstromsteuerpaket
kann dann ausgegeben werden, wodurch eine Anzahl verfügbarer Kredite
für eine weitere Übertragungsnachricht
spezifiziert wird.
-
Somit
kann der eingebettete Prozessor 80 einen Verbindungsdatenstromsteuerrahmen
einschließlich
des Datenstromsteuervorspanns erzeugen und den Verbindungsdatenstromsteuerrahmen an
die eingebettete Prozessoreingangswarteschlange 78 zur Übertragung
an das Netzwerk ausgebeben.
-
2 ist eine Ansicht, die
detaillierter die Warteschlangenpaarattributdatenbank 64 gemäß einer
Ausführungsform
der vorliegenden Erfindung zeigt. Die Warteschlangenpaarattributdatenbank 64 umfasst
mehrere Warteschlangenpaartabellen 100, die von dem Warteschlangenpaarattributverwaltungsmodul 66 eingerichtet
und verwaltet werden, und die so gestaltet sind, um komprimierte
Warteschlangenpaareinträge 102 zu
speichern. Insbesondere besitzt jede Warteschlangenpaartabelle 100 eine
entsprechend zugeordnete Einteilung gemeinsamer Attribute, die durch
die Markierung 104 für
gemeinsame Attribute dargestellt ist. Beispielsweise kann jede Warteschlangenpaartabelle 100 durch
das Warteschlangenpaarattributverwaltungsmodul so gestaltet sein,
um Warteschlangenpaare mit dem gleichen Transportdienst zu speichern,
wobei Tabellen 100a, 100b, 100c, 100d und 100e von
dem Warteschlangenpaarattributverwaltungsmodul 66 verwendet
werden, um Warteschlangenpaare für eine
zuverlässige
Verbindung (RC), ein zuverlässiges
Datagramm (RG), eine unzuverlässige
Verbindung (UC), ein unzuverlässiges
Datagramm (DU) und ein Rohdatagramm (RWD) zu speichern; in diesem
Beispiel speichert die Tabelle 100a lediglich Warteschlangenpaareinträge 102,
die zur Bereitstellung eines zuverlässigen Verbindungstransportdienstes
zugeordnet sind.
-
Alternativ
kann jede Warteschlangenpaartabelle 100 so ausgebildet
sein, um Warteschlangenpaare mit der gleichen Serviceebene (SL)
oder der gleichen virtuellen Verbindung (VL) als das relevante gemeinsame
Attribut zu speichern, wie dies durch die Markierung 104 für die gemeinsamen
Attribute dargestellt ist. Ferner kann jede Warteschlangenpaartabelle 100 ausgebildet
sein, um mehrere gemeinsame Werte zu speichern, wobei die Warteschlangenpaartabelle 100 so
gestaltet sein kann, um lediglich Warteschlangenpaareinträge 102 zu
speichern, die zum Bereitstellen der relevanten gemeinsamen Werte vorgesehen
sind (beispielsweise eine zuverlässige Verbindung
und eine Serviceebene mit einem Wert von SL1; oder eine zuverlässige Verbindung
und eine virtuelle Verbindungsstrecke mit einem Wert von VL1). Die
Speicherung von Warteschlangenpaaren und ausgewählten Warteschlangenpaartabellen
auf der Grundlage einer virtuellen Verbindungsstrecke liefert ein
höheres
Maß an
Komprimierung bei einem größeren Maß an Bearbeitungsressourcen,
was das Verhalten des HCA beeinflussen kann; das Speichern von Warteschlangenpaaren
in ausgewählten Warteschlangenpaartabellen
auf der Grundlage einer Seniceebene liefert jedoch ein geringeres
Maß an Komprimierung
und erfordert weniger Verarbeitungsressourcen im Vergleich zu der
Komprimierung auf Basis der virtuellen Verbindungsstrecke, wodurch
es dem HCA möglich
ist, ein höheres
Maß an
Leistungsfähigkeit
bereitzustellen.
-
Ferner
bewahrt das Einfügen
komprimierter Warteschlangenpaareinträge in eine Warteschlangenpaartabelle 100 auf
der Grundlage der virtuellen Verbindungsstrecke die Prioritätsreihenfolge
des Datenverkehrstroms, da Kredite, die für die Datenstromsteuerung verwendet
werden, sich auf die virtuelle Verbindungsstrecke gründen.
-
Somit
kann jede in 2 gezeigte
Warteschlangenpaartabelle 100 so ausgebildet sein, um Warteschlangenpaareinträge 102 für Warteschlangenpaare
zu speichern, die den gleichen Transportdienst besitzen; den gleichen
Transportdienst und/oder die gleiche Serviceebene besitzen; oder den
gleichen Transportdienst und/oder die gleiche virtuelle Verbindung
besitzen. Daher ist die Warteschlangenpaarattributdatenbank 64 in
der Lage, mehrere virtuelle Warteschlangenpaare unter Anwendung
einer geringeren Anzahl physikalischer Warteschlangenpaare zu speichern,
wobei die partitionierten Warteschlangentabellen 100 verwendet werden.
Zu beachten ist, dass andere relevante Attribute als gemeinsame
Attribute bei der Komprimierung der Information, die für einen
Warteschlangenpaareintrag 102 erforderlich ist, in einer
ausgewählte Warteschlangenpaartabelle
verwendet werden können.
-
3 ist ein Diagramm, das
das Verfahren zum Erzeugen und Speichern eines neuen komprimierten
Warteschlangenpaareintrags in die Warteschlangenpaarattributdatenbank 64 gemäß einer Ausführungsform
der vorliegenden Erfindung zeigt. Das Verfahren beginnt im Schritt 110,
wobei das Warteschlangenpaarattributverwaltungsmodul 66 die Warteschlangenpaarattributdatenbank 64 partitioniert,
um mehrere Warteschlangenpaartabellen 100 auf der Grundlage
ausgewählter
gemeinsamer Attribute, beispielsweise die Art des Transportdienstes, die
Serviceebene, die virtuelle Verbindung, etc., einzurichten.
-
Nach
dem Einrichten der Warteschlangenpaartabellen 100n ist
die Warteschlangenpaarattributdatenbank 64 in der Lage,
das Speichern eines neuen komprimierten Warteschlangenpaareintrags zu
beginnen. Insbesondere empfängt
das Warteschlangenpaarattributverwaltungsmodul 66 im Schritt 112 eine
Anforderung zum Erzeugen eines neuen Wartenschlangenpaares – beispielsweise
auf der Grundlage von Befehlen, die von einem lokalen oder entfernten
Kommunikationsverwaltungsmittel oder einem Teilnetz-Verwalter empfangen
wurden.
-
Das
Warteschlangenpaarattributverwaltungsmodul 66 ermittelt
im Schritt 114 die neuen Warteschlangenpaarattribute aus
den empfangenen Warteschlangenpaarbefehlen und analysiert im Schritt 116 ausgewählte neue
Warteschlangenpaarattribute, um die Warteschlangentabelle 100 zu
erkennen, die zum Speichern des neuen komprimierte Warteschlangenpaareintrags
zu verwenden ist. Insbesondere vergleicht das Warteschlangenpaarattributverwaltungsmodul 66 im
Schritt 118 die ausgewählten
Attribute des neuen Warteschlangenpaares mit den entsprechenden
gemeinsamen Attributen (die durch die entsprechenden Markierungen 104 dargestellt
sind) der Warteschlangenpaartabellen 100, um eine Übereinstimmung
zu erkennen.
-
Wenn
im Schritt 120 keine Übereinstimmung erkannt
wird, erzeugt das Warteschlangenpaarattributverwaltungsmodul 66 im
Schritt 122 eine neue Warteschlangenpaartabelle 100,
die die ausgewählten
Warteschlangenpaarattribute als die gemeinsamen Attribute aufweist.
Wenn jedoch im Schritt 120 eine Übereinstimmung erkannt wird,
speichert das Warteschlangenpaarattributverwaltungsmodul 66 im Schritt 124 in
der ausgewählten
Warteschlangenpaartabelle 100 mit den übereinstimmenden Attributen 104 einen
neuen komprimierten Wartenschlangenpaareintrag 102, der
die notwendigen Attribute des neuen Warteschlangenpaares mit Ausnahme
der gemeinsamen Attribute enthält.
Somit muss der neue Eintrag 102 lediglich die Information
enthalten, die sich von den gemeinsamen Attributen 104 unterscheidet,
wodurch die Speicherung mehrerer virtueller Warteschlangenpaare
aus einer geringeren Anzahl physikalischer Warteschlangenpaare in
der Datenbank 64 möglich
ist.
-
Obwohl
diese Erfindung im Hinblick darauf beschrieben ist, was gegenwärtig als
die praktikabelste bevorzugte Ausführungsform erachtet wird, ist es
selbstverständlich,
dass die Erfindung nicht auf die offenbarten Ausführungsformen
eingeschränkt ist,
sondern das im Gegenteil beabsichtigt ist, diverse Modifizierungen
und äquivalente
Anordnungen, die im Grundgedanken und Schutzbereich der angefügten Patentansprüche eingeschlossen
sind, mit abzudecken.