-
HINTERGRUND DER ERFINDUNG
-
Der
Bedarf an Bandbreite in Netzwerkanwendungen und an schnelleren Netzwerk-Übertragungsgeschwindigkeiten
erhöht
sich schneller als die Speicherbandbreite und die Verarbeitungsleistung der
Computer-Knoten, die den Datenverkehr verarbeiten. Der Umstieg auf
10-Gigabit-Ethernet verschlimmert das Problem noch weiter. In der
Regel erfordert die Kommunikation über TCP/IP Datenkopiervorgänge, die
wertvolle CPU- und Speicherressourcen belegen und zusätzlich Latenzzeiten
bewirken.
-
Die
RDMA-Technologie (ferner Direktspeicherzugriff) über TCP behandelt verschiedene
Probleme hinsichtlich der Bandbreite und der Verarbeitungsleistung.
Mit RDMA über
TCP kann ein bedeutender Teil des Protokollverarbeitungsaufwands
auf den Ethernet-Adapter verlagert werden, beispielsweise auf eine
RDMA-Netzwerkschnittstellenkarte (RNIC).
Außerdem
enthält
jedes ankommende Netzwerkpaket genügend Informationen, damit das
Paket direkt an einer endgültigen
Zielspeicheradresse platziert werden kann. Aufgrund der RDMA innewohnenden
DDP-Eigenschaft (Direct Data Placement) entfällt die Notwendigkeit von Zwischenspeicherkopien und
von weiterem, verwandtem Bedarf an Speicher- und Prozessorressourcen.
Ferner kann gegebenenfalls die Notwendigkeit zur Datenpufferung
in der NIC entfallen. Außerdem
führt die
Verringerung von Datenkopiervorgängen,
die durch RDMA vorgesehen wird, zu verringerten Latenzzeiten.
-
Mit
RDMA kann ein erster Computer Informationen direkt in den Speicher
eines zweiten Computers schreiben, wobei sehr geringe Anforderungen hinsichtlich
der Bandbreite des Speicherbusses und des Verarbeitungsaufwands
einer damit verbundenen CPU gestellt werden. Die Speicherschutz-Semantik
kann ebenfalls beibehalten werden. Daher werden durch RDMA, genauso
wie durch Direktspeicherzugriff im Allgemeinen, viele Vorteile bereitgestellt.
-
Beim
Lesen aus einer bzw. beim Schreiben in eine Speicherposition, die
einem Speicherbereich (MR) oder einem Speicherfenster (MW) zugeordnet ist,
müssen
einige Anwendungen unter Umständen sicherstellen,
dass auf den Speicher genau ein Mal oder eine begrenzte Anzahl von
Malen zugegriffen werden kann. Beispielsweise gibt es Sicherheitsbedenken
hinsichtlich dessen, dass der Host-Speicher während eines längeren Zeitraums
offen liegt. Bei der Verwaltung von Host-Speicher können übermäßige aufwandsbedingte
Kosten dadurch entstehen, dass die Registrierung des MR oder MW
bei der RNIC rückgängig gemacht
wird, die Ressource einem anderen Consumer zugewiesen wird (beispielweise
einem anderen Thread oder einer anderen Speicherposition) und die
Ressource wieder bei der RNIC registriert wird. Das Rückgängigmachen
der Ressourcen-Registrierung verbraucht Softwareressourcen und macht
die Wiederverwendung der Ressourcen weniger effizient, weil eine
längere
Zeit von dem Zeitpunkt, zu dem das ferne Element die Ressourcen
zuletzt nutzt, bis zu dem Zeitpunkt, zu dem sie entfernt werden
und für
einen anderen Zweck zur Verfügung stehen,
erforderlich ist. Wenn alternativ Speicher bei der RNIC registriert
ist, während
derselbe Speicher einem anderen Consumer zugewiesen wird, können unerwünschte Nebeneffekte
auftreten, weil Ressourcen offen gelegt werden, während diese
sich möglicherweise
in einem Übergang
befinden.
-
RDMA über TCP
stellt die DDP-Funktionalität
wie oben beschrieben bereit. RDMA erlaubt flexibel das Platzieren
von Informationen an der angegebenen Speicherposition, selbst wenn
das TCP-Segment, das diese Informationen trägt, nicht in der richtigen
Reihenfolge am Ziel ankommt, was zu einer TCP-Lücke führt. Eine Unterstützung einer 'One-Shot'-Ressourcen-Nutzung,
wenn ein DDP-Dienst für
nicht in der richtigen Reihenfolge befindliche Rahmen angefordert
wird, verkompliziert den Steuermechanismus für die 'One-Shot'-Nutzung oder erfordert alternativ ein
Puffern, bis die TCP-Lücke
geschlossen ist. Beide Optionen erhöhen zusätzlich die Kosten und Komplexität und sollten,
wenn irgend möglich,
vermieden werden. Demgemäß gibt es
beim Stand der Technik von DDP/RDMA einen hohen Bedarf an weniger
komplizierter Speichersteuerungstechnologie, bei der nur wenig oder
keine zusätzliche
Pufferung erforderlich ist.
-
Weitere
Einschränkungen
und Nachteile herkömmlicher
und traditioneller Ansätze
werden für
die Fachleute auf diesem Gebiet durch Vergleich solcher Systeme
mit der vorliegenden Erfindung offensichtlich, wie sie in dem übrigen Teil
der vorliegenden Anmeldung unter Bezugnahme auf die Zeichnungen dargelegt
ist.
-
Sony
Corporation (
EP 0 887
735 A2 ) offenbart ein Verfahren zur Speicherverwaltung,
das ein jedem Speicherblock zugewiesenes 8-Bit-Lösch-Flag (zur Angabe des Verwendungszustands
des Blocks) nutzt, um die Verarbeitungsgeschwindigkeit zu erhöhen. Wenn
in einem vorbestimmten Block befindliche Daten nicht mehr benötigt werden,
wird die Initialisierung des vorbestimmten Blocks (das heißt das Löschen von
in dem Block gespeicherten Daten) unmittelbar vor dem Zeitpunkt vorgenommen,
zu dem neue Daten in den Block geschrieben werden sollen. Wenn beispielsweise
Daten eines bestimmten Blocks nicht mehr benötigt werden, wird das Lösch-Flag
des Blocks in einen Löschzustand
versetzt. Wenn dann neue Daten in den Block geschrieben werden sollen,
während
sich das Lösch-Flag
in dem Löschzustand
befindet, wird der Block zunächst
initialisiert, wodurch ermöglicht
wird, dass neue Daten in den Block geschrieben werden. Nachdem Daten
in den Block geschrieben wurden, wird das Lösch-Flag entweder auf den Zustand 'Head in-use' (das heißt, der
Datenkopf wird in den Block geschrieben) oder auf den Zustand 'in-use' (das heißt, ein
Zwischenabschnitt der Daten wird in den Block geschrieben) gesetzt.
Somit gibt der Zustand des Lösch-Flags
den Verwendungszustand des Blocks an (beispielsweise: Daten nicht
länger
erforderlich, Datenkopf gespeichert oder Zwischendaten gespeichert).
-
Garcia
et al. (
US 6,163,834 )
offenbaren ein zweistufiges Suchschema zum Zugreifen auf eine Umsetzungs-
und Schutztabelle. Ein virtueller Schnittstellen-Consumer (VI) kann
auf den gesamten registrierten Speicher verweisen, indem er eine
virtuelle Seitennummer und den damit verbundenen Speicher-Handle-Index
(MHI) an eine Netzwerkschnittstellenkarte (NIC) übermittelt. Die NIC führt dann
die Umsetzung der virtuellen Adresse in die physische Adresse durch.
Beispielsweise verwendet die NIC den Speicher-Handle-Index (das
heißt
einen Zeiger), um das Speicher-Handle von einer MHI-Tabelle der
ersten Stufe abzurufen. Die NIC subtrahiert dann das Memory-Handle
von der virtuellen Seitennummer, um einen Pseudo-Adresszeiger (PSA) zu generieren, der
auf einen Eintrag für
eine physische Seitennummer (PPN) in der Umsetzungs- und Schutztabelle
(TPT) zeigt. Garcia et al. offenbaren die Verwendung des zweistufigen
Verfahrens zum Zugreifen auf eine TPT, um (1) Base/Bound-Checking
zu implementieren und (2) die TPT-Einträge neu anzuordnen, damit eine
Fragmentierung entfällt.
-
Der
Erfindung liegt die Aufgabe zugrunde, ein Verfahren zum Verwalten
von Speicherressourcen bereitzustellen, für das nur wenig oder keine
zusätzliche
Pufferung erforderlich ist.
-
Diese
Aufgabe wird durch ein Verfahren erfüllt, das in dem unabhängigen Anspruch
1 angegeben ist. Vorteilhafte Ausführungsbeispiele der Erfindung
sind in den Unteransprüchen
definiert.
-
Beispielhafte
Ausführungsbeispiele
der vorliegenden Erfindung stellen ein System und Verfahren zum
Verwalten von Speicherressourcen in einem System bereit, das einen
fernen Direktzugriff auf Speicher erlaubt. Ein beispielhaftes Ausführungsbeispiel
der vorliegenden Erfindung sieht das automatische Aufheben des Bindens
von gebundenen Ressourcen für
den direkten Speicherzugriff auf der Grundlage von Informationen
vor, die in Nachrichten von einer fernen Quelle empfangen wurden.
Diese Informationen können
beispielsweise einen Indikator für
das letzte Segment umfassen, um anzugeben, dass es sich bei dem
Nachrichtensegment um das letzte erwartete Nachrichtensegment für eine Nachricht
handelt. Das automatische Aufheben des Bindens kann beispielsweise
lediglich als Reaktion auf Informationen erfolgen, die von der fernen
Quelle empfangen wurden. Das automatische Aufheben des Bindens kann
auch beispielsweise vollständig
durch Verarbeitungs-Hardware erfolgen, die auf einer Netzwerkschnittstellenkarte
angeordnet ist. Ein weiteres beispielhaftes Ausführungsbeispiel der vorliegenden Erfindung
sieht eine Speicherverwaltung von Speicherabschnitten vor, auf die
fern und direkt zugegriffen werden kann, indem ein Flag zugewiesen
wird, um anzugeben, wann für
einen Speicherabschnitt besondere Zugriffsbeschränkungen, wie eine festgelegte
Anzahl von zulässigen
fernen Zugriffen, gelten. Ein beispielhaftes Ausführungsbeispiel
der vorliegenden Erfindung sieht den One-Shot-Zugriff auf eine Speicherressource
vor, die einer fernen Einheit zur Verfügung gestellt wird. Wenn die
Anforderungen für den
One-Shot-Zugriff
erfüllt
sind, wird das Binden der Speicherressource aufgehoben, und ein
weiterer Zugriff wird verweigert. Noch ein weiteres beispielhaftes Ausführungsbeispiel
der Erfindung sieht ein Flag vor, das den Zustand darstellt, in
dem die Zugriffsbeschränkungen,
die zu einem bestimmten Speicherabschnitt gehören, erfüllt worden sind. Bei dem Flag kann
es sich beispielsweise um ein Bit handeln, das gesetzt wird, um
anzugeben, dass eine ferne Ressource die für sie angegebene Zuteilung
von Zugriffen für
eine bestimmte Speicherressource aufgebraucht hat.
-
Diese
und weitere Vorteile, Aspekte und neuartige Merkmale der vorliegenden
Erfindung sowie Einzelheiten eines veranschaulichten Ausführungsbeispiels
davon werden aus der folgenden Beschreibung und den Zeichnungen
noch besser deutlich.
-
KURZE BESCHREIBUNG MEHRERER
ANSICHTEN DER ZEICHNUNGEN
-
1 ist
eine schematische Ansicht eines beispielhaften Systems gemäß verschiedenen
Aspekten der vorliegenden Erfindung, das eine Ressource offen legt,
auf die ein fernes Peer-System zugreifen soll.
-
2 ist
eine schematische Ansicht, welche die Registrierung von Speicherressourcen
und das Aufheben des Bindens von Speicherressourcen als Reaktion
auf eine Software-Anforderung veranschaulicht.
-
3 ist
eine schematische Ansicht, die gemäß verschiedenen Aspekten der
vorliegenden Erfindung die Registrierung von Speicherressourcen und
das automatische Aufheben des Bindens von Speicherressourcen als
Reaktion auf in einer fernen Nachricht ankommende Informationen
veranschaulicht.
-
4 ist
eine schematische Ansicht, die gemäß verschiedenen Aspekten der
vorliegenden Erfindung die Funktionsweise des One-Shot-Modells für das Szenario
veranschaulicht, in dem eine Nachricht an eine offen gelegte Ressource
gesendet wird.
-
5 ist
eine schematische Ansicht, die gemäß verschiedenen Aspekten der
vorliegenden Erfindung die Funktionsweise des One-Shot-Modells für das Szenario
veranschaulicht, in dem eine One-Shot-Ressource ihre eine Nachricht
empfangen hat und eine zweite Nachricht versucht, auf die One-Shot-Ressource
zuzugreifen.
-
6 ist
eine schematische Ansicht, die gemäß verschiedenen Aspekten der
vorliegenden Erfindung die Funktionsweise des One-Shot-Modells für das Szenario
veranschaulicht, in dem zwei aufeinander folgende Nachrichten, die
das Ziel haben, auf dieselbe Ressource zuzugreifen, nicht in der
richtigen Reihenfolge ankommen.
-
DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
-
Im
Folgenden wird auf 1 Bezug genommen, bei der es
sich um eine schematische Ansicht eines beispielhaften Systems 100 gemäß verschiedenen
Aspekten der vorliegenden Erfindung handelt, das eine Ressource
offen legt, auf die ein fernes Peer-System zugreifen soll. Ein Beispiel
für ein
solches System ist das RDMA-Modell (ferner Direktspeicherzugriff).
Obwohl sich die folgende Erörterung
gelegentlich auf Aspekte des RDMA-Modells konzentriert, ist die
vorliegende Erfindung unter keinen Umständen auf ein bestimmtes Speicherzugriffsmodell beschränkt, das
einen fernen Computer umfasst.
-
Bei
dem RDMA-Modell kann sich eine Anwendung, der eine Ressource gehört und die
sie einem fernen Peer-System offen legen möchte, in dem Benutzerraum 110 oder
in dem Kernel-Raum 120 ihres Computers befinden. Der Benutzerraum 110 und der
Kernel-Raum 120 sind innerhalb des Betriebssystems definiert.
Die Anwendung kann beispielsweise eine Arbeitsanforderung (WQE)
an die RNIC 130 übermitteln,
wobei sie eine Arbeitswarteschlange (WQ) 140 verwendet,
die zu einer Verbindung gehört, die
als Warteschlangenpaar (QP) 150 bezeichnet wird. Die RNIC 130 liest
die Einträge
in der WQ 140, führt
die WQE aus und informiert die Anwendung über ihren Status, indem sie
einen Beendigungseintrag (CQE) in die zu dem QP 150 gehörende Beendigungswarteschlange
(CQ) 160 absetzt. Die Anwendung 155 bzw. die Benutzer-DLL
erwirbt dann den Beendigungseintrag (CQE) von der Beendigungswarteschlange
(CQ) 160 und verarbeitet den CQE, um eine Benachrichtigung
bezüglich
der Beendigung der vorherigen Arbeitsanforderung (WQE) der Anwendung
zu erhalten.
-
Eine
Benutzerraumanwendung 155 kann sich auf eine Speicherressource
als Bereich von virtuellen Adressen (VA) beziehen. Diese Speicherressource
kann lokal und durch ein fernes Peer-System verwendet werden, wobei
bestimmte Regeln eingehalten werden (beispielsweise die RDMA-Regeln),
je nachdem, ob es sich bei der Speicherressource um einen Speicherbereich
(MR) oder um ein Speicherfenster (MW) handelt. Weitere Informationen
zu solchen Speicherressourcen und zu RDMA im Allgemeinen sind in
den RDMA-Regeln enthalten, wie sie beispielsweise von dem RDMA Consortium
veröffentlicht
werden und die hiermit durch Bezugnahme in ihrer Gesamtheit in diese
Anmeldung aufgenommen werden.
-
Die
Anwendung oder eine Middleware-Software, die für die Anwendung arbeitet (beispielsweise Winsock
Direct "WSD" 176 oder
Socket Direct Protocol "SDP" 179 zusammen
mit der Benutzer-DLL (dynamische Linking-Bibliothek) 177 und
dem Kernel-Treiber 178), registriert den MR bzw. das MW
bei der RNIC, bevor die Ressource einem fernen Peer-System offen
gelegt werden kann. Die Anwendung 155 oder andere Software
kann beispielsweise den MR bzw. das MW unter Verwendung der WQ 140 oder
auf irgend einem anderen Kommunikationsweg bei der RNIC 130 registrieren.
Sowie die RNIC 130 die Ressource registriert, liefert die
RNIC 130 an die Anwendung bzw. die Middleware-Software,
die für die
Anwendung arbeitet (oder allgemeiner an den "Consumer"), ein Token zurück. Der Consumer verwendet
dieses Token für
zukünftige
Verweise auf die registrierte Ressource durch den lokalen Consumer oder
das ferne Peer-System. Dieses Tag wird als STag (Lenkungs-Tag) bezeichnet.
-
Wenn
die RNIC 130 von einem fernen Peer-System eine Anforderung
empfängt,
auf die Ressource zuzugreifen, umfasst die Anforderung auch das
STag, das die RNIC 130 analysieren wird, um festzustellen,
ob das ferne Peer-System über
Zugriffsrechte verfügt,
und um festzustellen, ob das ferne Peer-System versucht, über die
registrierten Begrenzungen der Ressource hinaus zuzugreifen, wie sie
von dem lokalen Consumer festgelegt wurden, der die Ressource bei
der RNIC 130 registriert hat.
-
Im
Gegensatz zu dem Consumer, der virtuelle Adressen oder physische
Adressen verwenden kann, greift die Hardware (bzw. in diesem Beispiel
die RNIC 130) unter Verwendung physischer Adressen auf
den Speicher zu. Die RNIC 130 verwaltet in der Regel ihre
Umsetzungen von virtuellen Adressen (VA) in physische Adressen (PA)
in einer Umsetzungs- und Schutztabelle (TPT), zusammen mit dem STag
und den damit verbundenen Ressourcenbegrenzungen. Wenn der lokale
Consumer bestimmt, dass die Ressource nicht langer offen gelegt
sein soll, übermittelt
der lokale Consumer (beispielsweise über die WQ oder durch andere
Mittel) eine Anforderung an die RNIC 130, die Registrierung
(bzw. das Binden) der Ressource aufzuheben.
-
Jede
derartige Anforderung an die RNIC 130 verbraucht Zeit für den Consumer,
um die Anforderung aufzubauen und die Anforderung über den
Bus, der die Host-CPU und die RNIC 130 verbindet, an die RNIC 130 zu übermitteln.
Die RNIC 130 verarbeitet dann die Anforderung, aktualisiert
ihre interne(n) Tabelle(n) (TPT) und sendet eine Beendigungsangabe und
den Status an den Consumer zurück.
In vie len Fällen
erfordern dieser Zugriff auf die Hardware und dessen Verwaltung
im Vergleich zu anderen Systemaktivitäten eine beträchtliche
Menge an Zeit und können
demgemäß die gesamte
Systemleistung verschlechtern.
-
Es
sei angemerkt, dass die Anwendung (bzw. der Consumer) sich auch
in dem Kernel-Raum anstatt in dem Benutzerraum befinden kann. Beispielsweise
könnte
ein Protokoll in Betracht gezogen werden, das dem Speicher-Stack
des Betriebssystems Dienste bereitstellt (zum Beispiel iSCSI-Erweiterungen
für RDMA
oder iSER). In einem solchen Szenario können dieselben oder ähnliche
Mechanismen wie die oben beschriebenen verwendet werden, wobei jedoch
anstelle von Benutzerkomponenten Kernel-Komponenten verwendet werden.
-
Im
Folgenden wird auf 2 Bezug genommen, wobei es sich
um eine schematische Ansicht handelt, welche die Registrierung von
Speicherressourcen und das Aufheben des Bindens von Speicherressourcen
als Reaktion auf eine Software-Anforderung
gemäß verschiedenen
Aspekten der vorliegenden Erfindung veranschaulicht. Die Speicherressource
kann beispielsweise einen fortlaufenden Adressraum in dem virtuellen
Adressraum (VA) oder eine Scatter-Gather-Liste (SGL) in dem physischen Adressraum
(PA) darstellen, der als fortlaufender Raum in dem virtuellen Adressraum
beschrieben werden kann.
-
Die
Software bezeichnet einen Adressraum "A" 220.
Die Software setzt eine Anforderung an die Hardware (beispielsweise
an die RNIC) ab, die Ressource 230 zu registrieren. Als
Reaktion auf die Registrierungsanforderung aktualisiert die RNIC
ihre Tabelle 240 (beispielsweise eine Umsetzungs- und Schutztabelle,
TPT) mit einer Zuordnung der virtuellen Adresse oder der physischen
Adresse zu dem zugewiesenen STag und mit weiteren verwandten Informationen,
wie beispielsweise Begrenzungen der Ressource sowie Zugriffsrechten.
-
Nachdem
die Hardware die Ressource registriert hat und der Ressource ein
STag zugewiesen hat, kann die Software eine Sendeanforderung 245 einschließlich STag
an die Hardware absetzen, was dazu führt, dass die Hardware eine
Nachricht 250 an das ferne System 255 sendet,
mit der das STag bekannt gemacht (beziehungsweise angekündigt) wird. Zu
diesem Zeitpunkt ist die Ressource registriert, und das ferne System 255 weiß, welches
STag für
den Zugriff auf die entsprechende Ressource in dem lokalen System 257 verwendet
werden muss.
-
Bei
Fortsetzung des in 2 veranschaulichten Beispiels
setzt das ferne System 255 einen RDMA-Schreibbefehl 260 mit
dem geeigneten STag ab, was dazu führt, dass eine RDMA-Schreibnachricht 262 durch
ein Netzwerk zu dem lokalen System 257 gelangt. Die Ausführung der
RDMA-Schreibnachricht 262 führt dazu, dass Daten in die
Speicherressource geschrieben werden, die durch den STag-Wert angegeben
wird, der die RDMA-Schreibnachricht 262 begleitet.
-
Zu
einem bestimmten Zeitpunkt setzt der lokale Consumer eine Anforderung
zum Aufheben des Bindens 270 ab, um den weiteren Zugriff
auf die Ressource zu unterbinden. Dies kann beispielsweise dadurch
eingeleitet werden, dass das ferne System 255 eine Anforderung
zum Senden des Status 256 absetzt, um eine Sendenachricht 259 an
das lokale System 257 zu senden, die angibt, dass der Zugriff des
fernen Systems auf das STag X abgeschlossen ist. Die Sendenachricht 259 kann
wiederum eine Angabe 272 von der Hardware auslösen, welche
der Software mitteilt, dass das STag X erledigt ist. Die Anforderung
zum Aufheben des Bindens 270 kann die Ressource identifizieren,
indem sie den geeigneten STag-Wert in die Anforderung mit einschließt. Bei der
Anforderung zum Aufheben des Bindens 270 handelt es sich
um die Aktivität,
bei der die Registrierung der Ressource (beispielsweise MR oder
MW) aus der Hardware entfernt wird. Wenn beispielsweise eine Speicherprotokollanforderung
abgeschlossen ist, soll das Binden der Fenster an das QP aufgehoben
werden, so dass der Speicher wiederverwendet werden kann.
-
Durch
das Ausführen
der Anforderung zum Aufheben des Bindens 270 kann die Hardware
(zum Beispiel eine RNIC) ihre Tabelle 280 aktualisieren,
indem sie das STag und entsprechende Einträge löscht. Somit löst die Hardware
wirksam die Zuordnung zwischen STag und Ressource auf. Schließlich kann
die Hardware der Software angeben 290, dass das Binden
der Ressource aufgehoben wurde.
-
In
dem vorigen Beispiel hat die Software auf dem lokalen System den
Vorgang zum Aufheben des Bindens als Reaktion auf einen Satz von
Bedingungen eingeleitet. Wie zuvor bereits erläutert, führt diese Aktivität in der
Regel zu einer beträchtlichen
Menge an Systemaufwand, der die Systemleistung verschlechtern kann.
Ein beispielhafter RDMA-Transfer, beispielsweise ein RDMA-Transfer,
der durch eine Benutzerraumanwendung verursacht wurde, kann Folgendes
umfassen: Einrichten eines Speicherbereichs, Einrichten eines Fensters,
Mitteilung an die ferne Vorrichtung, dass das Fenster eingerichtet
wurde, Senden von Daten durch die ferne Vorrichtung an das Fenster,
Benachrichtigung der Vorrichtung, dass der Datentransfer an das
Fenster beendet ist, Abbauen des Fensters und Einrichten eines neuen
Fensters. Durch Vermeiden oder Vereinfachen eines oder mehrerer
der vorgenannten Schritte lässt
sich eine wesentliche Einsparung von Systemaufwand erzielen.
-
Teilweise
auf diese Möglichkeit
zur Verbesserung gerichtet, sieht ein Aspekt der vorliegenden Erfindung
vor, dass die Hardware das Binden der Ressource unter bestimmten
Bedingungen automatisch aufhebt. Diese Funktionalität wird im
Folgenden auch als "automatisches
Aufheben des Bindens" bezeichnet.
Die Hardware kann zu einem Zeitpunkt eine Angabe (beispielsweise "letztes Segment") von dem fernen
System empfangen, die in eine Nachricht eingebettet ist, die es
von dem fernen System empfangen hat. Die Hardware kann diese Angabe
verwenden, um ein automatisches Aufheben des Bindens einzuleiten.
Die Hardware kann auch Informationen verwenden, die während der
Registrierung bereitgestellt wurden (zum Beispiel Informationen,
die angeben, wie viele Male auf die Ressource zugegriffen werden
konnte), um ein automatisches Aufheben des Bindens einzuleiten.
Demgemäß benötigt die
Hardware nicht notwendigerweise eine Führung durch andere Ressourcen
des lokalen Systems und kann allein anhand von Informationen von
dem fernen System handeln.
-
Demgemäß braucht
die Software die Hardware nicht anzuweisen, das Binden der Ressource aufzuheben.
Die Hardware sollte jedoch die Software darüber informieren, dass die Ressource
entfernt wurde. Die Hardware kann diese Kommunikation auf vielfältige Weise
durchführen.
Um beispielsweise den lokalen Systemaufwand so gering wie möglich zu
halten, kann die Angabe mit anderen Informationen konsolidiert werden,
wenn ist es nicht erforderlich ist, eine direkte Angabe zu übermitteln.
-
Im
Folgenden wird auf 3 Bezug genommen, wobei es sich
um eine schematische Ansicht 300 handelt, welche die Registrierung
von Speicherressourcen und das automatische Aufheben des Bindens
von Speicherressourcen als Reaktion auf in einer fernen Nachricht
ankommende Informationen gemäß verschiedenen
Aspekten der vorliegenden Erfindung veranschaulicht. 3 ähnelt 2,
bis die RDMA-Schreibnachricht 362 an dem lokalen System 357 ankommt.
Es ist signifikant, dass der in 3 veranschaulichte
Prozess die in 2 gezeigte Anforderung zum Aufheben
des Bindens 270 von der Software an die Hardware nicht
umfasst. Die Hardware kann allein anhand der Informationen von dem fernen
System 355 agieren, oder beispielsweise anhand der Statusnachricht.
-
Die
RDMA-Schreibnachricht 362 kommt an dem lokalen System 357 an,
und darin ist ein Indikator (zum Beispiel L = 1) eingebettet, der
für das
lokalen System 357 bedeutet, dass dies das einzige oder letzte
Segment der RDMA-Schreibnachricht 362 ist. Schreibnachrichten
können
aus nur einem Nachrichtensegment oder aus einer großen Anzahl
von Nachrichtensegmenten bestehen. Außerdem kann die Hardware eine
Angabe aus dem Inhalt einer Nachricht ableiten, beispielsweise der
Statusnachricht. Sowie der Indikator erkannt wird, hebt die Hardware (zum
Beispiel die RNIC) automatisch das Binden der Ressource auf. Anders
ausgedrückt
macht die Hardware automatisch die Zuordnung zwischen STag und Speicher
ungültig,
beispielsweise indem die Zuordnung aus der Umsetzungstabelle 380 der
Hardware entfernt wird. Abschließend kann die Hardware der Software
angeben 390, dass die Hardware das Binden der Ressource
aufgehoben hat. Die Hardware kann auf einen beliebigen einer großen Anzahl
von potenziellen Indikatoren von dem fernen System 355 einwirken.
Demgemäß ist der
Schutzumfang der vorliegenden Erfindung keinesfalls auf einen beschränkten Satz
von Indikatoren, beispielsweise das L-Bit für den RDMA, beschränkt.
-
Wie
zuvor bereits erwähnt,
kann es für
den Consumer (zum Beispiel aus Gründen der Sicherheit, wegen
der Anwendungsleistung, der Pufferzirkulation, der Immunität gegen
Bugs, usw.) ein Problem sein, dass Speicher während längerer Zeiträume offen
gelegt ist. Ein weiterer vorteilhafter Aspekt der vorliegenden Erfindung
sieht die Verwendung einer Ressource vor, die für das ferne Peer-System nur eine
begrenzte Anzahl von Malen/Nachrichten lang offen gelegt ist. Die
RNIC kann das Binden der Ressource beispielsweise aufheben, nachdem
die angegebene Anzahl von Zugriffen auf die Ressource durchgeführt worden
ist. Bei diesem Aspekt der vorliegenden Erfindung können Zugriffe
gezählt
werden, beispielsweise von eins bis zu relativ hohen Werten. Eine
maximale Anzahl eins von Zugriffen kann zu einem One-Shot-Modus führen, eine
maximale Anzahl N von Zugriffen zu einem N-Shot-Modus.
-
Das
Beispiel einer Begrenzung auf einen Zugriff wird weiter unten noch
ausführlicher
erörtert. Dies
beschränkt
jedoch keinesfalls den Schutzumfang der vorlie genden Erfindung auf
eine Implementierung mit einem Zugriff bzw. eine One-Shot-Implementierung.
Für einen
Mehrfach-Zugriff auf die Ressource (N-Shot) kann bei einem Aspekt
der vorliegenden Erfindung ein weiteres Feld zu der Datenstruktur
hinzugefügt
werden, das die Ressource für die
RNIC beschreibt. Die Daten in diesem zusätzlichen Feld können beispielsweise
die Anzahl von Malen darstellen, welche die RNIC Zugriff auf die
Ressource gewähren
soll. Nach genau dieser Anzahl von Malen kann die RNIC das Binden
der Ressource automatisch aufheben und damit einen weiteren Zugriff verhindern.
-
Um
den Dienst mit einem Zugriff vorzusehen (dieser wird in diesem Dokument
auch als "One-Shot" bezeichnet), können bei
einem Aspekt der vorliegenden Erfindung zwei Flags zu der Datenstruktur
hinzugefügt
werden, die mit der offen gelegten Ressource (zum Beispiel dem MW
oder dem MR) verbunden sind: ein One-Shot-Modus-Flag (OSM) und ein One-Shot-Fired-Flag
(OSF). Es sei angemerkt, dass die RNIC diese Strukturen beispielsweise
separat oder an ein QP gebunden halten kann. Es sei außerdem angemerkt,
dass bei einem Aspekt der vorliegenden Erfindung einzelne Bits für das OSM- und
das OSF-Flag verwendet werden. Demgemäß werden das OSM- und das OSF-Flag
nachfolgende oft auch als das OSM-Bit bzw. OSF-Bit bezeichnet. Diese
beispielhafte Verwendung von Einzelbit-Flags beschränkt in keiner
Weise den Schutzumfang der vorliegenden Erfindung auf Einzelbit-Flags.
Beispielsweise werden Aspekte der vorliegenden Erfindung auf einfache
Weise um ein N-Shot-Modus-Flag (NSM) und ein N-Shot-Fired-Flag (NSF)
erweitert.
-
Wenn
eine Ressource als OSM-Ressource konfiguriert ist, wird das OSM-Bit
in der mit der Ressource verbundenen Datenstruktur gesetzt. Wenn die
RNIC die Ressource registriert und der Zugriff auf die Ressource
beginnt, prüft
die RNIC, ob eine vollständige
Nachricht empfangen wurde. Eine vollständige Nachricht kann beispielsweise
mehrere unabhängige
TCP-Segmente umfassen, die getrennt empfangen wurden (das heißt ein fernes
Peer-System kann eine RDMA-Schreibnachricht vorbereiten, die mehrere
DDP-Segmente für
das direkte Platzieren von Daten umfasst).
-
Bei
dem letzten Segment der Nachricht von dem fernen Peer-System ist
das L-Bit (Last Bit) gesetzt. Weitere Informationen zu dem L-Bit
können
der DDP-Spezifikation entnommen werden, die hiermit durch Bezugnahme
in ihrer Gesamtheit in diese Anmeldung aufgenommen wird. Beim Empfang
des Nachrichtensegments, in dem das gesetzte L-Bit enthalten ist,
setzt die RNIC das OSF-Bit. Dieses gesetzte Bit (bzw. Flag) dient
als Angabe, dass ein Segment mit gesetztem L-Bit für eine bestimmte
Ressource empfangen wurde. Wenn in der empfangenen TCP-Folge bis
zu der Position des Segments, welches das L-Bit enthält, keine
Lücke vorhanden
ist (das heißt,
die Empfänger-RNIC
hat alle vorherigen Folgeabschnitte dieser Nachricht empfangen und platziert),
hebt die RNIC automatisch das Binden der Ressource auf, wodurch
jeglicher weiterer Zugriff darauf verhindert wird.
-
Im
Folgenden wird auf 4 Bezug genommen, wobei es sich
um eine schematische Ansicht handelt, die gemäß verschiedenen Aspekten der
vorliegenden Erfindung die Funktionsweise des One-Shot-Modells für das Szenario
veranschaulicht, in dem eine Nachricht an die offen gelegte Ressource (zum
Beispiel entweder an ein MW oder an einen MR) gesendet wird. Die
Software des lokalen Systems 410 setzt eine Anforderung
für die
RNIC ab, die Ressource an der Adresse "A" 420 als One-Shot-Ressource
zu registrieren. Als Reaktion darauf verbindet die RNIC einen STag-Wert "X" mit der Adresse "A" und
aktualisiert ihre Ressourcentabelle 430 (zum Beispiel eine
ferne TPT-Tabelle), damit diese einen Datenstruktureintrag zur Verwaltung der
Ressource umfasst. Außerdem
setzt die RNIC das One-Shot-Modus-Bit (OSM) in ihrer Ressourcentabelle 430,
um der Anforderung der Software, die Ressource als One-Shot-Ressource
zu bezeichnen, zu entsprechen.
-
Nachdem
die RNIC die Ressource gemäß der Anforderung
der Software registriert hat 420, setzt die Software eine
Sendeanforderung ab 440, um das mit der verfügbaren One-Shot-Ressource verbundene
STag bekannt zu machen. Die RNIC wiederum überträgt die Sendenachricht 445 an
das ferne System 450. Als Reaktion auf das Empfangen der Sendenachricht 445 setzt
das ferne System 450 eine RDMA-Schreibanforderung 455 ab,
die zur Übertragung
einer Nachricht M1 führt.
-
In
diesem Beispiel handelt es sich bei der Nachricht um eine RDMA-Schreibnachricht
mit zwei Segmenten. Das ferne System 450 sendet zunächst das
RDMA-Schreibsegment eins 460 an das lokale System 410.
Das RDMA-Schreibsegment eins 460 identifiziert das STag
und setzt das L-Bit auf 0, da es sich bei dem RDMA-Schreibsegment
eins 460 nicht um das letzte Segment der vollständigen RDMA-Schreibnachricht
handelt. Das lokale System 410 empfängt das RDMA-Schreibsegment eins 460, und
die RNIC erkennt nicht, dass das L-Bit gesetzt ist, so dass die
RNIC den direkten Speicherzugriff normal erfolgen lässt und
keine weitere besondere Maßnahme
durchführt.
-
Als
Nächstes
sendet das ferne System 450 das RDMA-Schreibsegment zwei 465 an
das lokale System 410. Das RDMA-Schreibsegment zwei 465 identifiziert
das STag und setzt das L-Bit auf 1, da das RDMA-Schreibsegment zwei 465 das
letzte Segment der vollständigen
RDMA-Schreibnachricht ist. Das lokale System 410 empfängt das
RDMA-Schreibsegment zwei 465, und die RNIC erkennt, dass
das L-Bit gesetzt ist, was angibt, dass es sich bei dem RDMA-Schreibsegment
zwei 465 um das letzte Segment der RDMA-Schreibnachricht
handelt. Als Reaktion darauf setzt die RNIC das geeignete One-Shot-Fired-Bit
(OSF) in ihrer Ressourcentabelle 470 auf 1, um anzugeben,
dass das letzte Segment der Nachricht für die One-Shot-Ressource empfangen
wurde. Wenn das letzte Segment (bzw. der letzte Abschnitt) der Nachricht
empfangen wurde und keine Lücken
in der TCP-Folge vorhanden sind, hebt die RNIC das Binden der Ressource
auf und sendet die entsprechende Angabe 480 an die Software.
-
Aspekte
des One-Shot-Mechanismus können
zusätzliche
Nachrichten von der geschützten Ressource
fernhalten, sobald die Ressource eine vollständige Nachricht empfangen hat.
Dies ist unter Bezugnahme auf 5 veranschaulicht. 5 ist eine
schematische Ansicht 500, die gemäß verschiedenen Aspekten der
vorliegenden Erfindung die Funktionsweise des One-Shot-Modells für das Szenario
veranschaulicht, in dem eine One-Shot-Ressource ihre eine Nachricht
empfangen hat und eine zweite Nachricht versucht, auf die One-Shot-Ressource
zuzugreifen. Die in 5 veranschaulichte One-Shot-Funktionsweise ähnelt der,
die in 4 veranschaulicht ist, bis das ferne System 510 eine zweite
Nachricht 520 einleitet.
-
Wenn
die zweite Nachricht 520 an dem lokalen System 530 ankommt,
kann sich die Ressourcentabelle der RNIC in einem von zwei Zuständen befinden.
In dem ersten Zustand hat die RNIC als Reaktion auf das Ankommen
des letzten Segments 540 von Nachricht eins das Aufheben
des Bindens der Ressource beendet, wie in der Ressourcentabelle 535 gezeigt.
Da das STag nicht an eine verfügbare
Ressource gebunden ist, blockiert die RNIC demgemäß den Zugriff
von Nachricht zwei 520 auf eine Ressource und kann eine
Fehlerangabe generieren 545. In dem zweiten Zustand hat
die RNIC als Reaktion auf das Ankommen des letzten Segments 540 von
Nachricht eins das Aufheben des Bindens der Ressource noch nicht
durchgeführt,
aber die RNIC hat wenigstens das OSF-Flag in der Ressourcentabelle 550 gesetzt.
Da das OSF-Flag für
das entsprechende STag in der Ressourcentabelle 550 gesetzt
ist, kann die RNIC demgemäß den Zugriff
von Nachricht zwei 520 auf die Ressource blockieren und
eine Fehlerangabe 545 generieren.
-
Es
sei angemerkt, dass das DDP- und das RDMA-Protokoll keine Nachrichtennummerierung
für Nachrichten
aufweisen, die an Puffer mit Tags adressiert sind, wie diejenigen,
die durch ein MW oder einen MR beschrieben sind. Die Empfänger-RNIC kann jedoch
manchmal die Reihenfolge bestimmen, indem sie beispielsweise die
TCP-Folgenummer verwendet. Somit kann die RNIC Strategien für die Speicherverwaltung
implementieren, und diese Aspekte der vorliegenden Erfindung sollten
nicht durch verschiedene andere Aspekte der vorliegenden Erfindung
beschränkt
werden. Um beispielsweise jegliches Platzieren von Daten außer den
Segmenten der M1 zu verhindern, kann die RNIC ihren Empfang auf streng
in der richtigen Reihenfolge befindliche TCP-Segmente beschränken. Alternativ
kann die RNIC beispielsweise nicht in der richtigen Reihenfolge
befindliche Daten puffern, bis die TCP-Lücke
geschlossen ist, und dann Entscheidungen hinsichtlich der Platzierung
treffen.
-
Zur
weiteren Veranschaulichung von Aspekten der vorliegenden Erfindung
kann das Szenario betrachtet werden, in dem zwei Nachrichten (M1
und M2) an dasselbe Fenster gesendet werden, aber nicht in der richtigen
Reihenfolge ankommen. In diesem Szenario ist die RDMA-Netzwerkschnittstellenkarte
(RNIC) in der Lage festzustellen, dass eine Fehlerbedingung vorliegt.
Im Folgenden wird zur Veranschaulichung auf 6 Bezug
genommen.
-
6 ist
eine schematische Ansicht 600, die gemäß verschiedenen Aspekten der
vorliegenden Erfindung die Funktionsweise des One-Shot-Modells für das Szenario
veranschaulicht, in dem zwei aufeinander folgende Nachrichten, die
das Ziel haben, auf dieselbe Ressource zuzugreifen, nicht in der
richtigen Reihenfolge ankommen. Anfänglich sendet das ferne System 610 Nachricht
eins 621 an das lokale System 630, die für STag X
bestimmt ist. Dann sendet das ferne System 610 zum Beispiel
versehentlich Nachricht zwei 622 an das lokale System 630,
die ebenfalls für
STag X bestimmt ist. Aufgrund der inkonsistenten Latenzzeiten im
Netzwerk oder aus einem anderen Grund kommt Nachricht zwei 622 im
lokalen System 630 an, bevor Nachricht eins 621 ankommt.
-
Wenn
Nachricht zwei 622 mit dem gesetzten L-Bit (oder einem
anderen Indikator) an dem lokalen System 630 ankommt, setzt
die RNIC in ihrer Ressourcentabelle 640 das OSF-Flag. Da
Nachricht zwei 622 vor Nachricht eins 621 angekommen
ist, besteht eine Bedingung mit TCP-Lücke. Es sei angemerkt, dass
die RNIC das Binden der Ressource nicht aufhebt, bis die TCP-Segmente
bis hin zu dem Segment, welches das L-Bit enthielt, empfangen wurden.
-
Wenn
Nachricht eins 621 an dem lokalen System 630 ankommt
und versucht, auf die dem STag X entsprechende One-Shot-Ressource
zuzugreifen, stellt die RNIC bei einer Suche in ihrer Ressourcentabelle 640 fest,
dass das OSF-Flag für
die Ressource gesetzt ist. Diese Bedingung kann beispielsweise die
RNIC veranlassen, Nachricht eins 621 den Zugriff auf die
Ressource zu verweigern und eine Fehlerbedingung zu generieren 650.
Die RNIC kann unter Umständen
nicht über
die Zustände
verfügen,
um eine Fehlerangabe mit dem exakten Header für M2 zu generieren, so dass
sie möglicherweise den
Header von M1 mit einem Fehlercode verwendet, der angibt, dass eine
frühere
Nachricht M2 nicht in der richtigen Reihenfolge vorhanden war, welche das
Setzen des OSF-Flags für
das Fenster bewirkt hat.
-
Es
sei angemerkt, dass es in dem Fall, in dem Segmente von zwei Nachrichten
M1 und M2 unterwegs gemischt werden, vorkommen kann, dass Mehrfach-Platzierungen
in dieselbe Speicherressource (siehe Erörterung weiter oben bezüglich des Verhinderns
von Mehrfach-Platzierungen) erfolgen. Aufgrund des letztendlichen
Empfangs von zwei Nachrichten, die ein gesetztes L-Bit (oder einen
anderen Indikator) enthalten, wird die RNIC den Fehler schließlich erkennen.
-
Zusammengefasst
lässt sich
sagen, dass verschiedene Aspekte der vorliegenden Erfindung eine
effiziente Implementierung eines fernen One-Shot- oder N-Shot-Direktzugriffs auf
Speicher vorsehen, einschließlich
des automatischen Aufhebens des Bindens von Speicherressourcen.
-
Während die
Erfindung unter Bezugnahme auf bestimmte Aspekte der Erfindung beschrieben wurde,
ist es für
Fachleute auf diesem Gebiet eindeutig verständlich, dass verschiedene Änderungen
vorgenommen werden können
und ersatzhalber äquivalente
Elemente verwendet werden können,
ohne dass vom Schutzumfang der Erfindung abgewichen wird. Außerdem können viele
Modifikationen vorgenommen werden, um eine bestimmte Situation oder ein
bestimmtes Material an die Lehre der Erfindung anzupassen, ohne
von ihrem Schutzumfang abzuweichen. Daher ist beabsichtigt, dass
die Erfindung nicht auf das spezielle offenbarte Ausführungsbeispiel
beschränkt
ist, sondern dass die Erfindung alle Ausführungsbeispiele umfasst, die
von dem durch die angehängten
Ansprüche
definierten Schutzumfang umfasst werden.