DE102015112634A1 - Unterstützen von RMA-API über aktive Message - Google Patents

Unterstützen von RMA-API über aktive Message Download PDF

Info

Publication number
DE102015112634A1
DE102015112634A1 DE102015112634.6A DE102015112634A DE102015112634A1 DE 102015112634 A1 DE102015112634 A1 DE 102015112634A1 DE 102015112634 A DE102015112634 A DE 102015112634A DE 102015112634 A1 DE102015112634 A1 DE 102015112634A1
Authority
DE
Germany
Prior art keywords
data
remote
read
rma
address space
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.)
Pending
Application number
DE102015112634.6A
Other languages
English (en)
Inventor
Jianxin Xiong
Robert J. Woodruff
Frank L. Berry
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 DE102015112634A1 publication Critical patent/DE102015112634A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/18Commands or executable codes

Abstract

Verfahren, Vorrichtungen und Software zum Implementieren von RMA-Anwendungsprogrammierschnittstellen (APIs) über Active Message (AM). AM-Schreib- und AM-Leseanforderungen werden von einem lokalen Knoten an einen entfernten Knoten gesendet, um Daten in einen Speicher auf dem entfernten Knoten zu schreiben oder Daten aus einem solchen Speicher zu lesen, wofür Remote-Memory-Access(RMA)-Techniken verwendet werden. Die AM-Anforderungen werden von entsprechenden AM-Handlern behandelt, die mit den Anforderungen assoziierte Operationen automatisch durchführen. Zum Beispiel kann für AM-Schreibanforderungen ein AM-Schreibanforderungshandler in einer AM-Schreibanforderung enthaltene Daten in einen entfernten Adressraum im Speicher auf dem entfernten Knoten schreiben oder gemäß einem Schema für die Übermittlung getaggter Nachrichten eine entsprechende RMA-Schreibanforderung generieren, die in eine RMA-Warteschlange eingereiht wird. Ähnliche Operationen werden von AM-Leseanforderungshandlern durchgeführt. RMA-Lese- und -Schreibvorgänge unter Verwendung von AM werden ferner durch die Verwendung assoziierter Lese-, Schreib- und RMA-Fortschrittmodule ermöglicht.

Description

  • STAND DER TECHNIK
  • In einem Computersystem mit der Konfiguration eines verteilten Speichers (zum Beispiel eines Clusters) hat jeder Computerknoten direkten Zugang zu seinem eigenen angeschlossenen lokalen Speicher. Der an andere Knoten angeschlossene Speicher wird entfernter Speicher genannt. Gewöhnlich ist ein entfernter Speicher nicht direkt zugänglich und es werden Nachrichtenweiterleitungsmechanismen zum Kommunizieren zwischen den Knoten verwendet.
  • Remote Memory Access (RMA) bezieht sich auf eine Software-Schnittstelle, die den Eindruck vermittelt, dass auf den entfernten Speicher direkt zugegriffen werden kann. Es gibt viele Formen von RMA-Operationen, doch letztlich sind es zusammengefasst zwei: Lesen und Schreiben. Die Leseoperation kopiert Daten aus einem Adressbereich eines entfernten Speichers in einen lokalen Puffer. Die Schreiboperation kopiert Daten aus einem lokalen Puffer in einen Adressbereich eines entfernten Speichers.
  • Bestehende Remote-Memory-Access(RMA)-Implementierungen fallen allgemein in zwei Kategorien. Die Implementierungen, die der ersten Kategorie entsprechen, ziehen Nutzen aus der Remote-Direct-Memory-Access(RDMA)-Fähigkeit der zugrunde liegenden Interconnect-Fabrics zwischen Computerknoten. InfiniBand (IB) Host Controller Adaptors (HCAs) wie diejenigen von Mellanox unterstützen RDMA-Funktionen in Hardware. Die Fähigkeit bietet sich für Anwendungen über eine Software-Schnittstelle, die sich IB Verbs nennt. Mit IB Verbs erzeugt der Benutzer zum Durchführen einer RMA-Operation eine Arbeitsanforderung und trägt sie in eine Arbeitswarteschlange ein. Der HCA verarbeitet dann die Warteschlange und führt RDMA in Hardware durch. Bei der von der zweiten Kategorie verwendeten Vorgehensweise werden RMA-Funktionen über ein reguläres Message-Passing-Interface (MPI) emuliert. Ein Beispiel ist die Implementierung einseitiger Operationen in MPICH/MPICH2 (High-Performance MPI). Dies erfolgt oft in Anforderung-Antwort-Weise. Aufgrund der asynchronen Art der RMA-Operationen wird gewöhnlich ein separater Thread benötigt, um sicherzustellen, dass die Anforderungen verarbeitet werden.
  • Die bestehenden RMA-Implementierungen weisen zahlreiche Nachteile auf. Bei RDMA-basierten Implementierungen ist spezielle Hardware erforderlich. Bei Message-Passing-basierten Implementierungen muss zusätzlicher Verkehr, der assoziierte Nachrichten betrifft, über die Interconnect-Fabric übertragen werden, sodass mithin die Nutzbandbreite der Fabric reduziert wird.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorstehenden Aspekte und viele der damit einhergehenden Vorteile dieser Erfindung werden noch klarer erkennbar, wenn zu ihrer besseren Verständlichkeit auf die folgende ausführliche Beschreibung in Verbindung mit den beiliegenden Zeichnungen Bezug genommen wird, wobei sich gleiche Bezugszeichen in den verschiedenen Ansichten je auf gleiche Teile beziehen, sofern nicht anders angegeben:
  • 1a ist eine schematische Darstellung, die einen RMA-Schreibvorgang, bei dem ein Block von Daten durch die Verwendung eines AM-Schreibanforderungshandlers in den Adressraum eines entfernten Knotens geschrieben wird, gemäß einer Ausführungsform veranschaulicht;
  • 1b ist eine schematische Darstellung, die einen RMA-Lesevorgang, bei dem ein Block von Daten durch die Verwendung eines AM-Leseanforderungshandlers und eines AM-Leseantworthandlers aus dem Adressraum eines entfernten Knotens gelesen wird, gemäß einer Ausführungsform veranschaulicht;
  • 2a ist eine schematische Darstellung, die eine Implementierung von RMA-Schreibvorgängen, bei der Daten über eine Vielzahl von Paketen unter Verwendung des in 1a gezeigten Schemas übertragen werden, gemäß einer Ausführungsform veranschaulicht;
  • 2b ist eine schematische Darstellung, die eine Implementierung von RMA-Lesevorgängen, bei der Daten über eine Vielzahl von Paketen unter Verwendung des in 1b gezeigten Schemas übertragen werden, gemäß einer Ausführungsform veranschaulicht;
  • 3a ist eine schematische Darstellung, die einen RMA-Schreibvorgang mittels getaggter Nachrichten, bei dem ein Block von Daten durch die Verwendung einer AM-Anforderung, der sich eine Sendeoperation anschließt, in den Adressraum eines entfernten Knotens geschrieben wird, gemäß einer Ausführungsform veranschaulicht;
  • 3b ist eine schematische Darstellung, die einen RMA-Lesevorgang mittels getaggter Nachrichten, bei dem ein Block von Daten durch die Verwendung eines AM-Leseanforderungshandlers, eines RMA-Fortschrittmoduls und eines RMA-Lesemoduls gelesen wird, gemäß einer Ausführungsform veranschaulicht;
  • 4 ist eine Zeitablaufdarstellung, die einen Austausch von Nachrichten zwischen einem lokalen Knoten und einem entfernten Knoten entsprechend einem Zugriffsschlüsselaustausch und einer Speicherregistrierungsoperation veranschaulicht; und
  • 5 ist eine Blockschemadarstellung einer Knotenarchitektur, die dafür konfiguriert ist, um Aspekte von Operationen lokaler und entfernter Knoten gemäß hierin offenbarten Ausführungsformen zu ermöglichen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Hierin werden Ausführungsformen von Verfahren, Vorrichtungen und Software zum Implementieren von RMA-Anwendungsprogrammierschnittstellen (APIs) über Active Message (AM) beschrieben. In der folgenden Beschreibung werden zahlreiche spezielle Details dargelegt, um ein eingehendes Verständnis von hierin offenbarten und veranschaulichten Ausführungsformen zu vermitteln. Der Fachmann auf dem einschlägigen Gebiet erkennt jedoch, dass die Erfindung auch ohne eines oder mehrere der speziellen Details oder mittels anderer Verfahren, Komponenten, Materialien etc. praktisch umgesetzt werden kann. In anderen Fällen werden wohl bekannte Strukturen, Materialien oder Operationen nicht gezeigt oder ausführlich beschrieben, um die Verständlichkeit von Aspekten der Erfindung nicht zu beeinträchtigen.
  • Der Klarheit halber werden einzelne Komponenten in den Figuren hierin statt durch ein konkretes Bezugszeichen möglicherweise auch durch ihre Benennungen in den Figuren bezeichnet. Darüber hinaus werden Bezugszeichen, die sich auf einen konkreten Typ einer Komponente (im Gegensatz zu einer konkreten Komponente) beziehen, möglicherweise mit einem Bezugszeichen gezeigt, nach dem „(typ)“ steht, was „typisch“ bedeutet. Es versteht sich, dass die Konfiguration dieser Komponenten typisch ist für ähnliche Komponenten, die es möglicherweise gibt, die aber in den Zeichnungsfiguren der Einfachheit und der Klarheit halber nicht gezeigt werden, oder sonst für ähnliche Komponenten, die nicht mit separaten Bezugszeichen versehen sind. Umgekehrt darf „(typ)“ nicht in der Bedeutung ausgelegt werden, dass die Komponenten, Elemente etc. typischerweise für die im Zusammenhang mit ihnen offenbarten Funktionen, Implementierungen, Zwecke etc. verwendet werden.
  • Gemäß Aspekten der hierin offenbarten Ausführungsformen werden Active-Message-Techniken implementiert, um RMA-Schreib- und -Leseoperationen zu ermöglichen, bei denen Daten unter Verwendung von RMA in einen Speicher in einem entfernten Knoten geschrieben oder aus einem solchen Speicher gelesen werden. AM beruht auf dem Grundgedanken, dass ein Stück Code an der Zielseite automatisch ausgeführt wird(?), wenn eine Nachricht eintrifft. Dieses Stück Code wird AM-Handler genannt. Mehrere AM-Handler können beim AM-Mechanismus vorregistriert sein und eine AM-Nachricht kann sich auf beliebige von ihnen beziehen, indem ein entsprechender Identifizierer für den AM-Handler angegeben wird. Eine AM-Nachricht kann entweder eine Anforderung oder eine Antwort sein, die beide Daten sowie zusätzliche Steuerinformationen übermitteln und die Ausführung des angegebenen Handlers bewirken können. Eine AM-Anforderung kann überall ausgegeben werden, nur nicht innerhalb eines AM-Handlers; dahingegen kann eine AM-Antwort nur innerhalb eines AM-Handlers ausgegeben werden, und es kann höchstens eine Antwort pro AM-Anforderung ausgegeben werden.
  • Gemäß Aspekten der hierin offenbarten Ausführungsformen werden Active-Message-Handler automatisch ausgeführt, wenn eine entsprechende AM-Anforderung oder -Antwort an ihrem Ziel eintrifft. Hierdurch wird der notwendige Mechanismus für asynchrone Verarbeitung bereitgestellt, der für RMA-Operationen benötigt wird. Im Grunde ist eine RMA-Schreiboperation implementierbar als AM-Anforderung, die die Daten aus dem Quellpuffer übermittelt, und als AM-Handler, der die Daten in die Zieladresse kopiert. Eine RMA-Leseoperation ist implementierbar als AM-Anforderung, die die Zieladresseninformationen übermittelt, als AM-Handler, der die Daten über eine AM-Antwort zurücksendet, und als weiterer AM-Handler, der die Daten in den Zielpuffer kopiert.
  • Die 1a und 1b veranschaulichen Schreib- und Lese-AM-Mechanismen zum Übertragen von Blöcken von Daten zwischen einem lokalen Knoten 100 und einem entfernten Knoten 102 gemäß einer Ausführungsform. Wie in 1a gezeigt, beinhaltet der lokale Knoten 100 einen Quellpuffer (src_buf) 104, ein RMA-Schreib(rma_write())-Modul 106 und einen AM-Schreibantwort-Handler 108. Der entfernte Knoten 102 beinhaltet einen AM-Schreibanforderungshandler 110 und einen RMA-Adressraum 112. Der lokale Knoten 100 ist über eine Zwischenverbindung 114 kommunikativ an den entfernten Knoten 102 gekoppelt.
  • Ein RMA-Vorgang zum Schreiben eines Blocks von Quelldaten 116 aus dem Quellpuffer 104 in den RMA-Adressraum 112 verläuft folgendermaßen. Die Quelldaten 116 werden über das RMA-Schreibmodul 106, das eine AM-Schreibanforderung 118 generiert, die über die Zwischenverbindung 114 an den AM-Handler 110 gesendet wird, aus dem Quellpuffer 104 gelesen. Die AM-Schreibanforderung 118 beinhaltet Quelldaten 116 sowie Informationen über den Bereich eines entfernten Speichers, in den Quelldaten 116 zu schreiben sind. Diese beinhalten die Anfangsadresse (rma_addr) im RMA-Adressraum 112, wohin der Anfang der Daten 116 zu schreiben ist, und beinhalten optional möglicherweise die Größe (Länge), einen Zugriffsschlüssel und/oder ein Nachrichten-Tag. Der AM-Schreibanforderungshandler an der Zielseite (AM-Schreibanforderungshandler 110) kopiert dann Quelldaten 116 in den RMA-Adressraum 112, angefangen bei der Adresse rma_addr, über eine DMA- oder Speicherkopieroperation 120. In einer Ausführungsform kann, wenn der AM-Schreibanforderungshandler 110 das Kopieren von Quelldaten 116 in den RMA-Adressraum 112 abgeschlossen hat, eine optionale AM-Schreibantwort 122 an den Initiator (den lokalen Knoten 100) zurückgesendet werden, falls ein Abschlussereignis gewünscht wird. Wie veranschaulicht, ist die AM-Schreibantwort 122 an den AM-Schreibantworthandler 108 gerichtet, der dafür konfiguriert ist, um das Abschlussereignis zu behandeln.
  • 1b zeigt weitere Ressourcen und AMs, die vom lokalen Knoten 100 und vom entfernten Knoten 102 in Verbindung mit einer RMA-Leseoperation eingesetzt werden. Diese beinhalten einen Zielpuffer (dest_buf) 124, ein RMA-Lese(rma_read())-Modul 126 und einen AM-Leseantworthandler 128 für den lokalen Knoten 100 und einen AM-Leseanforderungshandler 130 für den entfernten Knoten 102. In einer Ausführungsform entsprechen der AM-Schreibantworthandler 108 und der AM-Leseantworthandler 128 demselben AM-Handler. Ähnlich entsprechen in einer Ausführungsform der AM-Schreibanforderungshandler 110 und der AM-Leseanforderungshandler 130 demselben AM-Handler.
  • Die Operation einer RMA-Leseoperation verläuft folgendermaßen. Die RMA-Lese-API 126 sendet eine AM-Leseanforderung 132 an den AM-Leseanforderungshandler 130, die einen entfernten Adressbereich beginnend bei rma_addr identifiziert, wo die zu lesenden Daten (z. B. entfernte Daten 134) gespeichert sind. In einer Ausführungsform beinhaltet die AM-Leseanforderung 132 die Anfangsadresse (rma_addr), die Länge und beinhaltet möglicherweise einen Zugriffsschlüssel und/oder ein Nachrichten-Tag. Der AM-Leseanforderungshandler 130 sendet in Ansprechen auf das Empfangen der AM-Leseanforderung 132 eine Kopie von entfernten Daten 134 über eine AM-Leseantwort 136, die an den AM-Leseantworthandler 128 gerichtet ist, vom entfernten Knoten 102 an den lokalen Knoten 100. Nach dem Empfang der AM-Leseantwort 136 extrahiert der AM-Leseantworthandler 128 die Kopie von entfernten Daten 134 und führt einen DMA- oder Speicherkopiervorgang 138 durch, um die Kopie von entfernten Daten 134 in den Zielpuffer 124 zu schreiben, wodurch die RMA-Leseoperation abgeschlossen wird.
  • Allgemein weisen AM-Mechanismen möglicherweise Einschränkungen hinsichtlich der Menge von Daten auf, die über eine einzelne AM-Nachricht übertragen werden können. Um solche Einschränkungen zu überwinden, lässt sich eine Menge von Daten, die über die maximal zulässige Menge für eine einzelne AM-Nachricht hinausgeht, in kleinere Dateneinheiten (z. B. Pakete) unterteilen und in Pipelining-Weise übertragen. Beispiele für RMA-Lese- und RMA-Schreiboperationen, aus denen eine Übertragung von Daten zwischen einem lokalen Knoten 200 und einem entfernten Knoten 202 über eine Zwischenverbindung 204 unter Verwendung dieser Technik resultiert, werden in den 2a und 2b veranschaulicht.
  • Wie in 2a gezeigt, beinhaltet der lokale Knoten 200 einen Quellpuffer 206 mit mehreren Slots 208, ein RMA-Schreibmodul 210 und einen AM-Schreibantworthandler 212. Der entfernte Knoten 202 beinhaltet einen AM-Schreibanforderungshandler 214 und einen in mehrere Slots 218 partitionierten RMA-Speicherraum 216.
  • Der ein Pipelining durchlaufende RMA-Schreibvorgang läuft folgendermaßen ab. Der Zugriff auf Daten, die in jeweiligen Slots im Quellpuffer 206 gespeichert sind, erfolgt über ein RMA-Schreibmodul 210 und sie werden über jeweilige AM-Schreibanforderungen 222 als Vielzahl von Paketen 220 übertragen. Ähnlich wie oben beinhaltet in einer Ausführungsform jede AM-Schreibanforderung 222 die Anfangsadresse (rma_addr) und eine optionale Länge, einen Zugriffsschlüssel und/oder ein Nachrichten-Tag. Nach dem Empfang durch den AM-Handler 214 wird jede AM-Anforderung 222 verarbeitet, woraus eine Generierung jeweiliger Speicherkopien 224 resultiert, die Daten in entsprechende Adressbereiche beginnend bei rma_addr im RMA-Adressraum 216 schreiben. In Ausführungsformen, die Abschlussereignisse einsetzen, werden eine oder mehrere AM-Schreibantworten 226 an den AM-Handler 212 zurückgegeben. Zum Beispiel könnte eine AM-Schreibantwort pro abgeschlossenem Paketschreibvorgang zurückgegeben werden, oder eine AM-Schreibantwort kann den Abschluss mehrerer Paketschreibvorgänge bestätigen, etwa die Bereitstellung einer einzelnen AM-Schreibantwort 226 für eine jeweilige Quelldatenübertragung, ohne dass die Zahl der gesendeten Pakete berücksichtigt wird.
  • Zu Veranschaulichungszwecken ist der Teil der Quelldaten pro Paket 220 als in einem jeweiligen Slot 208 im Quellpuffer 206 gespeichert und in einen jeweiligen Slot 218 im RMA-Adressraum 216 geschrieben abgebildet; es ist jedoch erkennbar, dass der Quellpuffer 206 und/oder der RMA-Adressraum 216 nicht in mehrere Slots partitioniert sein müssen, sondern allgemein als ein oder mehrere Adressräume, in denen Daten gespeichert werden können, konfiguriert sein können. Zudem kann die Größe jedes Pakets 220 gleich sein, oder es können unterschiedliche Größen verwendet werden. In einer Ausführungsform setzen Pakete zum Beispiel eine Maximum Transfer Unit (MTU) ein, die auf das zugrunde liegende Transportprotokoll anwendbar ist, das von der Zwischenverbindung 204 verwendet wird (wobei zu beachten ist, dass das letzte Paket eine kleinere Größe aufweisen kann als die MTU). Gleichzeitig sollen die in den Paketen enthaltenen Daten derart in den RMA-Adressraum 216 geschrieben werden, dass der Block von Quelldaten, die über mehrere Pakete zu übertragen sind, repliziert wird. In einer Ausführungsform werden die Paketdaten in einer vorgegebenen Reihenfolge geschrieben, während in anderen Ausführungsformen Schreibvorgänge ohne eine vorgegebene Reihenfolge zulässig sind, solange der geschriebene Datenblock beim Abschluss eine Replikation des Quelldatenblocks umfasst.
  • Wie in 2b gezeigt, beinhaltet der lokale Knoten 200 ferner einen Zielpuffer 228 mit mehreren Slots 230, ein RMA-Lesemodul 232 und einen AM-Leseantworthandler 234. Der entfernte Knoten 202 beinhaltet ferner einen AM-Leseanforderungshandler 236. Wie beim RMA-Schreibvorgang mit mehreren Paketen werden Daten über das RMA-Lesemodul 232 unter Verwendung mehrerer Pakete übertragen. Jede Paketübertragung ähnelt der Datenblockübertragung für den RMA-Lesevorgang von 1b und verläuft folgendermaßen. Das RMA-Lesemodul 232 sendet eine AM-Leseanforderung 240, die vom AM-Leseanforderungshandler 236 behandelt werden soll. Jede AM-Leseanforderung 240 identifiziert einen entfernten Adressbereich beginnend bei rma_addr, wo die zu lesenden entfernten Daten gespeichert sind. Ähnlich wie oben beinhaltet die AM-Leseanforderung 240 in einer Ausführungsform die Anfangsadresse (rma_addr), die Länge und einen optionalen Zugriffsschlüssel und/oder ein optionales Nachrichten-Tag.
  • Der AM-Leseanforderungshandler 236 sendet in Ansprechen auf das Empfangen jeder AM-Leseanforderung 240 eine Kopie eines Teils von entfernten Daten, die ein Paket 241 umfassen, über eine AM-Leseantwort 242, die an den AM-Leseantworthandler 234 gerichtet ist, vom entfernten Knoten 202 an den lokalen Knoten 200. Nach dem Empfang jeder AM-Leseantwort 242 extrahiert der AM-Leseantworthandler 234 die Kopie von entfernten Daten im Paket 241 und führt einen DMA- oder Speicherkopiervorgang 244 durch, um die Kopie von über das Paket 241 übertragenen entfernten Daten in einen entsprechenden Slot 230 im Zielpuffer 228 zu schreiben, wodurch die RMA-Leseoperation für das Paket abgeschlossen wird. Wie bei der in 2a abgebildeten und oben erörterten Leseoperation mit mehreren Paketen dient die Verwendung von Slots für den Zielpuffer 228 und den RMA-Adressraum 216 Veranschaulichungszwecken, denn die Größe von Paketen kann in einigen Ausführungsformen variieren.
  • Die Paketgröße kann ein einschränkender Faktor für die maximale Bandbreite sein, die über eine Pipelining-Implementierung erzielbar ist. Jedoch lässt sich eine zusätzliche Leistungssteigerung für große Datenübertragungen erzielen, indem ein Mechanismus für die Weiterleitung getaggter Nachrichten genutzt wird, falls ein solcher Mechanismus verfügbar ist. Die Weiterleitung getaggter Nachrichten ähnelt der Weiterleitung regulärer Nachrichten insofern, als sie beide durchgeführt werden, indem an einer Seite gesendet und an der anderen Seite empfangen wird. Bei der Weiterleitung getaggter Nachrichten wird jedoch außerdem ein Tag an jede Nachricht angefügt, sodass der Empfänger entscheiden kann, welche Nachricht er empfangen möchte. Dadurch wird quasi ein einzelner Kommunikationskanal zu mehreren Kanälen umfunktioniert. In einer Ausführungsform wird das Tag verwendet, um unterschiedliche RMA-Operationen zu identifizieren, um den Eins-zu-eins-Abgleich zwischen den gepaarten Sende- und Empfangsoperationen sicherzustellen.
  • In den 3a und 3b werden Beispiele für Lese- und Schreiboperationen unter Verwendung getaggter Nachrichten veranschaulicht. Wie bei der Schreiboperation mittels getaggter Nachrichten in 3a gezeigt, wird ein Block von Quelldaten von einem lokalen Knoten 300 über eine Zwischenverbindung 304 an einen entfernten Knoten 302 übertragen. Im Einzelnen beinhaltet der lokale Knoten 300 einen Quellpuffer 306, in dem die Quelldaten gespeichert sind, und ein RMA-Schreibmodul 308, während der entfernte Knoten 302 einen AM-Schreibanforderungshandler 310, ein RMA-Fortschrittmodul 312 und einen RMA-Adressraum 314 beinhaltet.
  • Die Schreiboperation mittels getaggter Nachrichten verläuft folgendermaßen. Der RMA-Schreibvorgang umfasst eine AM-Schreibanforderung 316, der sich eine Sendeoperation 318 anschließt. Die AM-Schreibanforderung 316 übermittelt nur die Informationen über den entfernten Adressbereich, ohne irgendwelche Nutzdaten; stattdessen werden die Sendedaten 320 über die anschließende Sendeoperation 318 übertragen. Nach dem Empfang der AM-Schreibanforderung 316 generiert der AM-Handler 310 eine entsprechende RMA-Schreibanforderung und platziert die RMA-Schreibanforderung über eine Warteschlangeneinreihungsoperation 322 in einer RMA-Warteschlange 324. Wenn die in die Warteschlange eingereihte RMA-Schreibanforderung vom RMA-Fortschrittmodul 312 nach einer Warteschlangenentfernungsoperation 326 anschließend verarbeitet wird, wird eine Empfangsoperation 328 ausgegeben, wobei der entfernte Adressbereich durch die AM-Schreibanforderung 316 als Empfangspuffer im RMA-Adressraum 314 bereitgestellt wird. Diese Empfangsoperation soll mit Senden 320, das an der Initiatorseite (d. h. am lokalen Knoten 300) abgegeben wird, übereinstimmen und die Quelldaten in den vorgesehenen entfernten Adressbereich im RMA-Adressraum 314 bringen. Allgemein können das Senden von AM-Schreibanforderungen und Vorgänge zum Senden entsprechender Daten asynchron ablaufen, auch wenn die AM-Schreibanforderung bevorzugt dem mit ihr assoziierten Senden von Daten vorausgehen sollte. In einer Ausführungsform kann die Empfangsoperation 328 vorübergehend Blöcke von Sendedaten 320 puffern, bevor sie in den RMA-Adressraum 314 geschrieben werden.
  • Wie in 3b gezeigt, beinhaltet der lokale Knoten 300 ferner einen Zielpuffer 330 und ein RMA-Lesemodul 332, die dafür konfiguriert sind, um eine Leseoperation mittels getaggter Nachrichten folgendermaßen zu ermöglichen. Wie bei der Schreiboperation mittels getaggter Nachrichten besteht ein RMA-Lesevorgang aus einer Empfangsoperation, der sich eine AM-Leseanforderung anschließt, und der AM-Leseanforderungshandler bewirkt, dass an der Zielseite eine Sendeoperation ausgegeben wird. Die RMA-Warteschlange an der Zielseite wird benötigt, weil Nachrichtenweiterleitungsoperationen gewöhnlich nicht innerhalb eines AM-Handlers ausgegeben werden können.
  • Wie in 3b veranschaulicht, gibt das RMA-Lesemodul 332 eine AM-Leseanforderung 334 aus, die an einen sie empfangenden AM-Leseanforderungshandler 336 auf dem entfernten Knoten 302 gerichtet ist. Der AM-Leseanforderungshandler 336 generiert eine entsprechende RMA-Leseanforderung und reiht die Leseanforderung in eine RMA-Leseanforderungswarteschlange 338 ein, während ein Sendeblock 340 im RMA-Fortschrittmodul 312 Leseanforderungen aus der RMA-Leseanforderungswarteschlange 338 entfernt, entsprechende Daten aus dem RMA-Adressraum 314 abruft und die Daten über eine Sendeoperation 342 an eine Empfangsoperation 344 im RMA-Lesemodul 332 sendet. Die Empfangsoperation 344 schreibt die Daten dann in den Zielpuffer 330, wodurch die entfernte Leseoperation abgeschlossen wird.
  • Abhängig von der konkreten Vorgehensweise, die verwendet wird, muss/müssen der Speicheradressraum/die Speicheradressräume, der/die für RMA-Schreib- und -Leseoperationen gemäß den vorhergehenden Ausführungsformen verwendet werden soll/sollen, vorab registriert werden oder nicht. Einige Ausführungsformen setzen zum Beispiel PSM (Performance Scaled Messaging) ein, das keiner Speicherregistrierung bedarf. PSM definiert eine API, die speziell für HPC ausgelegt ist. Es definiert eine API für die Übermittlung getaggter Nachrichten, die mit Fähigkeiten auf hohem Niveau umgeht und die Implementierung des Message-Passing-Interface(MPI)-Standards effizient unterstützen kann. Indes kann die interne PSM-Implementierung abzielen auf spezielle Details von Zwischenverbindungen bezüglich Datenbewegungsstrategien und -abstimmungen sowie auf Erweiterungsmerkmale wie QoS (Dienstgüte), verteilende Routine, Resilienz etc. Active Message wird auch als experimentelles Merkmal bereitgestellt.
  • PSM ist für die Implementierung als Benutzerbereichsbibliothek ausgelegt. Details zum Durchführen von RMA-Datenübertragungen unter Verwendung von PSM finden sich in Versionen des PSM Programmer’s Manual, das von QLogic, dem Entwickler von PSM, veröffentlicht wurde, oder in verschiedenen auf PSM bezogenen Dokumenten, die von der OpenFabrics Alliance veröffentlicht wurden. PSM ist enthalten in OFED (OpenFabrics Enterprise Distribution) ab der Version 1.5.2 und steht gleichberechtigt neben IB Verbs. Wenngleich eine Verwendung in InfiniBand angestrebt wird, ist eine PSM-ähnliche Funktionalität in Ausführungsformen hierin, die PSM einsetzen, auch für Nicht-InfiniBand-Hardware implementierbar, etwa für Ethernet-Netzadapter.
  • Wie oben erwähnt, bedarf es für PSM keiner Speicherregistrierung. Optional kann ein leichter Speicherregistrierungsmechanismus implementiert werden, um eine Zugriffsvalidierung bereitzustellen. Bei der Implementierung zu berücksichtigen ist möglicherweise die Speicherbereichssteuerungsstruktur, auf die zugegriffen werden soll, etwa ein angrenzender Adressraum oder eine sortierte disjunkte Liste mit Adressbereichen. In einer Ausführungsform kann die Steuerungsstrukturadresse als Zugriffsschlüssel verwendet werden.
  • 4 veranschaulicht einen Zeitablauf für Operationen und Nachrichtenübermittlungen, die von einem lokalen Knoten 400 und einem entfernten Knoten 402, die über eine Netzstrecke 404 verbunden sind, durchgeführt werden. Obgleich die Netzstrecke 404 als direkte Verbindung abgebildet ist, versteht es sich, dass sie auch durch ein oder mehrere zusätzliche Netzelemente wie einen Switch oder dergleichen verlaufen kann. Der Zeitablauf beginnt damit, dass der lokale Knoten 400 einen oder mehrere Adressbereiche 406 innerhalb eines oder mehrerer Adressräume im lokalen Speicher des lokalen Knotens 400 registriert. Der lokale Knoten 400 veröffentlicht dann Zugriffsschlüssel 408 über Schlüsselveröffentlichungsnachrichten 410, die an einen oder mehrere entfernte Knoten, etwa den entfernten Knoten 402, gesendet werden. In einer Ausführungsform wird der Zugriffsschlüssel 408 codiert, um den registrierten Adressbereich/-raum bzw. die registrierten Adressbereiche/-räume, der/die die vom lokalen Knoten 400 registriert wurde(n), zu identifizieren.
  • Anschließend wird der Zugriffsschlüssel 408 für die Validierung von RMA-Schreib- und RMA-Leseanforderungen verwendet, die durch den entfernten Knoten 402 ausgegeben werden, um auf einen Speicher innerhalb des Adressbereichs/-raums bzw. der Adressbereiche/-räume, der/die vom lokalen Knoten 400 registriert wurde(n), zuzugreifen. Wie im unteren Teil von 4 abgebildet, wird eine Nachricht 412, die einer AM-Schreibanforderung oder einer AM-Leseanforderung entspricht, vom entfernten Knoten 402 an den lokalen Knoten 400 gesendet. Die Nachricht 412 beinhaltet den Zugriffsschlüssel 408. Nach dem Empfang wird der AM-Schreibvorgang oder der AM-Lesevorgang durch den lokalen Knoten 400 unter Verwendung des Zugriffsschlüssels 408 validiert. Diese Validierungsoperation kann auch den von der Anfangsadresse angegebenen Adressbereich und die explizite oder detektierte Größe der Anforderung validieren, um zu verifizieren, dass es sich dabei um den registrierten Adressbereich/-raum bzw. die registrierten Adressbereiche/-räume handelt. Falls die Validierung erfolgreich ist, wird der Zugriff auf den registrierten Speicher zugelassen; sonst nicht. In einer Ausführungsform wird eine Zugriffsfehlernachricht 416 an den entfernten Knoten 402 zurückgegeben, falls dessen AM-Schreib- oder AM-Leseanforderung nicht validiert werden konnte.
  • 5 ist eine Blockschemadarstellung einer beispielhaften Vorrichtung, die dafür konfiguriert ist, um als (lokaler) Knoten 500 implementiert zu werden, der sich verwenden lässt, um Aspekte der hierin offenbarten Ausführungsformen zu implementieren. (Es ist zu beachten, dass der Zusammenhang eines „lokalen“ oder eines „entfernten“ Knotens von der Stelle des Knotens ausgeht, und die hierin beschriebenen Operationen und Funktionalitäten im Zusammenhang mit den RMA-Schreib- oder -Leseoperationen durch einen einzelnen Knoten implementierbar sind, der entweder als lokaler Knoten oder als entfernter Knoten arbeitet.) In einer Ausführungsform umfasst der Knoten 500 ein Serverblade oder ein Servermodul, das dafür konfiguriert ist, um in einem Servergehäuse installiert zu werden. Das Serverblade/-modul beinhaltet eine Hauptplatine 502, auf der verschiedene Komponenten montiert sind, einschließlich eines Prozessors 504, eines Speichers 506, eines Datenspeicherelements 508 und einer Netzschnittstelle 510. Die Hauptplatine 502 beinhaltet allgemein ein oder mehrere Steckverbinder zum Aufnehmen von Strom aus dem Servergehäuse und zum Kommunizieren mit anderen Komponenten im Gehäuse. Eine häufige Bladeserver- oder -modularchitektur setzt zum Beispiel eine Backplane oder dergleichen ein, die mehrere Steckverbinder beinhaltet, in denen Gegensteckverbinder jeweiliger Serverblades oder -module installiert sind.
  • Der Prozessor 504 beinhaltet eine CPU 512, die einen oder mehrere Kerne beinhaltet. Die CPU und/oder die Kerne sind an eine Zwischenverbindung 514 gekoppelt, die beispielhaft für eine oder mehrere im Prozessor implementierte Zwischenverbindungen ist (und der Einfachheit halber als einzelne Zwischenverbindung gezeigt wird). Die Zwischenverbindung 514 ist auch an eine Speicherschnittstelle (SST) 516 und eine PCIe(Peripheral Component Interconnect Express)-Schnittstelle 518 gekoppelt. Die Speicherschnittstelle 516 ist an den Speicher 506 gekoppelt, während die PCIe-Schnittstelle 518 eine Schnittstelle zum Koppeln des Prozessors 504 an verschiedene Ein-/Ausgabe(E/A)-Einrichtungen bereitstellt, einschließlich eines Datenspeicherelements 508 und einer Netzschnittstelle 510. Allgemein steht das Datenspeicherelement 508 beispielhaft für eine oder mehrere nicht flüchtige Speichereinrichtungen wie insbesondere ein Magnet- oder ein Bildplattenlaufwerk, ein Solid-State-Laufwerk (SSD), einen Flashspeicherchip oder -baustein etc.
  • Die Netzschnittstelle 510 steht beispielhaft für verschiedene Typen von Netzschnittstellen, die in einem Serverknoten wie einem Ethernet-Netzadapter oder einer NIC implementiert sein könnten. Die Netzschnittstelle 510 beinhaltet eine PCIe-Schnittstelle 520, eine Direct-Memory-Access(DMA)-Engine 522, einen Sendepuffer 524, einen Empfangspuffer 526, ein MAC-Modul 530 und eine Paketverarbeitungsengine oder NPU (Netzprozessoreinheit) 532. Die Netzschnittstelle 510 beinhaltet ferner einen PHY-Schaltkreis 534, der Schaltkreisbauteile und Logik zum Implementieren eines Ethernet Physical Layer umfasst. Ebenfalls abgebildet ist ein optionaler Reconciliation Layer 536.
  • Der PHY-Schaltkreis 534 beinhaltet einen Satz von PHY-Sublayern 538a–d, einen Serializer/Deserializer (SERDES) 540, einen Sendeport 542, der einen Sendepuffer 544 und einen oder mehrere Sender 546 beinhaltet, und einen Empfangsport 548, der einen Empfangspuffer 550 und einen oder mehrere Empfänger 552 beinhaltet. Der Knoten 500 ist ferner veranschaulicht als über eine drahtgebundene oder optische Strecke 560 in Kommunikation mit einem entfernten Knoten 554 verbunden, welcher einen Empfangsport 556 und einen Sendeport 558 beinhaltet. Abhängig von der konkreten Ethernet-PHY, die implementiert ist, können unterschiedliche Kombinationen aus PHY-Sublayern eingesetzt werden, außerdem unterschiedliche Sender- und Empfänger-Konfigurationen. Zum Beispiel setzt eine 10GE-PHY andere PHY-Schaltkreisbauteile ein als eine 40GE- oder eine 100GE-PHY.
  • Es werden verschiedene Software-Komponenten auf einem oder mehreren Kernen der CPU 512 ausgeführt, um softwarebasierte Aspekte der Ausführungsformen, wie mit Bezug auf die 1a, 1b, 2a, 2b, 3a und 3b oben beschrieben, zu implementieren. Beispielhafte Software-Komponenten, die in 5 abgebildet sind, beinhalten ein Hostbetriebssystem 562, Anwendungen 564 und Software-Befehle zum Implementieren verschiedener AM-Handler 566 und RMA-Module 568. Die Software-Komponenten werden allgemein insgesamt oder teilweise auf der Platine im Knoten gespeichert, wie durch das Datenspeicherelement 508 abgebildet. Zudem können gemäß einigen Ausführungsformen eine oder mehrere der Komponenten über ein Netz heruntergeladen und in den Speicher 506 und/oder das Datenspeicherelement 508 geladen werden.
  • Während des Betriebs des Knotens 500 wird das Hostbetriebssystem 562 teilweise, zusammen mit einer oder mehreren Anwendungen 564, die im Betriebssystem-Benutzerbereich ausgeführt werden, in den Speicher 506 geladen. Die AM-Handler 566 und die RMA-Module 558 sind allgemein unter Verwendung eines Betriebssystemtreibers oder dergleichen implementierbar oder sind als im Betriebssystem-Benutzerbereich ausgeführte Software-Komponente implementierbar. In einigen Ausführungsformen sind die AM-Handler 566 und/oder die RMA-Module 558 insgesamt oder teilweise als eingebettete Software implementierbar, die in einem oder mehreren in der Netzschnittstelle 510 implementierten Verarbeitungselementen ausgeführt wird, etwa einer Paketverarbeitungsengine/NPU 532. Eine andere Option besteht darin, dass AM-Handler-Operationen und/oder RMA-Modul-Operationen insgesamt oder teilweise über eine oder mehrere auf dem Knoten 502 gehostete virtuelle Maschinen (nicht gezeigt) implementierbar sind.
  • In der in 5 veranschaulichten Ausführungsform ist das MAC-Modul 530 als Bestandteil der Netzschnittstelle 510 abgebildet, die eine Hardware-Komponente umfasst. Die Logik zum Implementieren verschiedener Operationen, die von der Netzschnittstelle 510 unterstützt werden, ist implementierbar über eingebettete Logik und/oder eingebettete Software, die in der Paketverarbeitungsengine/NPU 532 oder einem oder mehreren anderen Prozessorelementen läuft. Eingebettete Logik kann zum Beispiel eingesetzt werden, um Pakete höherer Schichten für vom Sendeport 542 ausgehende Übertragungen vorzubereiten. Dazu gehört das Verpacken von Paketen höherer Schichten (z. B. TCP/IP, UDP, andere Protokolle etc.) in Ethernet-Pakete und das darauffolgende Framing der Ethernet-Pakete, wobei Ethernet-Pakete zum Generieren eines Stroms aus Ethernet-Frames verwendet werden.
  • Allgemein sind Paketverarbeitungsoperationen, die von der Paketverarbeitungsengine/NPU 532 durchgeführt werden, über eingebettete Logik und/oder eingebettete Software implementierbar. Die Paketverarbeitung wird implementiert, um die Weitersendung von Daten innerhalb der Netzschnittstelle 510 und auch zwischen der Netzschnittstelle 510 und dem Speicher 506 abzuwickeln. Dazu gehört die Verwendung der DMA-Engine 522, die dafür konfiguriert ist, um Daten mittels DMA-Schreibvorgängen vom Empfangspuffer 526 an den Speicher 506 weiterzusenden, woraus resultiert, dass Daten über die PCIe-Schnittstellen 520 und 518 an den Speicher 506 weitergesendet werden, ohne dass die CPU 512 daran beteiligt ist. In einigen Ausführungsformen umfassen der Sendepuffer 524 und der Empfangspuffer 526 einen Memory-Mapped-IO(MMIO)-Adressraum, der dafür konfiguriert ist, um DMA-Datenübertragungen zwischen diesen Puffern und dem Speicher 506 mittels Techniken zu ermöglichen, die auf dem Gebiet der Netzwerktechnik weithin bekannt sind.
  • Keine, alle oder ein Teil der MAC-Layer-Operationen sind in Software implementierbar, die auf dem Hostprozessor 504 läuft. In einer Ausführungsform, die eine Split-MAC-Architektur verwendet, sind Operationen zur Ver- und Entpackung von Ethernet-Paketen in Software implementiert, während das Ethernet-Framing und -Deframing über Hardware implementiert ist (z. B. über eingebettete Logik oder eingebettete Software, die auf der Paketverarbeitungsengine/NPU 532 auf der Netzschnittstelle 510 läuft).
  • Die RMA-Schreibvorgänge und die RMA-Schemata, die AM-Anforderungen, AM-Antworten und assoziierte AM-Handler einsetzen, erweisen sich als vorteilhaft gegenüber bestehenden RMA-Techniken. Da diese Schemata über Software, die auf einem Host ausgeführt wird, implementierbar sind, können RMA-Datenübertragungen, für die bisher speziell konfigurierte Hardware (z. B. InfiniBand HCAs) erforderlich war, zum Beispiel auch mit anderen Protokollen wie insbesondere Ethernet verwendet werden. Die Schemata sind mit bestehenden Techniken kombinierbar, etwa der Verwendung von PSM oder APIs für die Übermittlung getaggter Nachrichten, um die Funktionalität und die Leistung weiter zu verbessern.
  • Weitere Aspekte des hierin beschriebenen Gegenstands werden in den folgenden nummerierten Klauseln dargelegt:
    • 1. Verfahren zum Durchführen von Remote-Memory-Access(RMA)-Datenübertragungen zwischen einem entfernten Knoten und einem lokalen Knoten, wobei das Verfahren Folgendes umfasst: Durchführen eines RMA-Schreibvorgangs, bei dem Daten aus dem lokalen Knoten in den entfernten Knoten geschrieben werden, durch Lesen von zu schreibenden Daten aus einem Quellpuffer auf dem lokalen Knoten; Senden einer ersten Active-Message(AM)-Schreibanforderung vom lokalen Knoten an einen AM-Handler auf dem entfernten Knoten, wobei die erste AM-Schreibanforderung zu schreibende Daten und eine Anfangsadresse in einem Adressraum eines entfernten Speichers auf dem entfernten Knoten, wohin die Daten zu schreiben sind, enthält; und Behandeln der ersten AM-Schreibanforderung mit dem AM-Handler auf dem entfernten Knoten durch Extrahieren der Daten aus der ersten AM-Schreibanforderung und Schreiben der Daten in einen Adressbereich im Adressraum eines entfernten Speichers beginnend bei der Anfangsadresse.
    • 2. Verfahren nach Klausel 1, das ferner Folgendes umfasst: Senden einer AM-Schreibantwort vom entfernten an den lokalen Knoten, wobei die AM-Schreibantwort angibt, dass die Daten erfolgreich in den Adressraum eines entfernten Speichers geschrieben wurden; und Einsetzen eines AM-Handlers auf dem lokalen Knoten, um die AM-Schreibantwortnachricht zu verarbeiten.
    • 3. Verfahren nach Klausel 1 oder 2, das ferner Folgendes umfasst: Partitionieren der zu schreibenden Daten in eine Vielzahl von Paketen; für jedes der Vielzahl von Paketen Lesen von diesem Paket entsprechenden Paketdaten aus dem Quellpuffer auf dem lokalen Knoten; Senden einer jeweiligen AM-Anforderung vom lokalen Knoten an den AM-Handler auf dem entfernten Knoten, die die Paketdaten und eine Anfangsadresse in einem Adressraum eines entfernten Speichers auf dem entfernten Knoten, wohin die Paketdaten zu schreiben sind, enthält; und Behandeln der jeweiligen AM-Anforderung mit dem AM-Handler auf dem entfernten Knoten durch Extrahieren der Paketdaten aus der jeweiligen AM-Anforderung und Schreiben der Daten in einen Adressbereich im Adressraum eines entfernten Speichers beginnend bei der Anfangsadresse, wobei die erste AM-Schreibanforderung einer AM-Schreibanforderung entspricht, die zum Übertragen eines ersten Pakets von Daten von der Vielzahl von Paketen verwendet wird.
    • 4. Verfahren nach Klausel 3, das ferner Folgendes umfasst: Detektieren, dass alle Paketdaten erfolgreich in den Adressraum eines entfernten Speichers geschrieben wurden; Senden einer AM-Antwort vom entfernten an den lokalen Knoten, die angibt, dass die Paketdaten erfolgreich in den Adressraum eines entfernten Speichers geschrieben wurden; und Einsetzen eines AM-Handlers auf dem lokalen Knoten, um die AM-Antwortnachricht zu verarbeiten.
    • 5. Verfahren nach einer der vorhergehenden Klauseln, das ferner Folgendes umfasst: Durchführen eines RMA-Lesevorgangs, bei dem Daten aus dem entfernten Knoten gelesen und an den lokalen Knoten übertragen werden, durch Senden einer AM-Leseanforderung an den AM-Handler auf dem entfernten Knoten, wobei die AM-Leseanforderung einen Adressbereich im entfernten Adressraum mit zu lesenden Daten identifiziert; in Ansprechen auf das Empfangen der AM-Leseanforderungsnachricht Abrufen der zu lesenden Daten aus dem entfernten Adressraum über den AM-Handler auf dem entfernten Knoten und Senden der abgerufenen Daten an den lokalen Knoten über eine AM-Leseantwortnachricht; und Behandeln der AM-Leseantwort mit einem AM-Handler auf dem lokalen Knoten durch Extrahieren der Daten aus der AM-Leseantwort und Schreiben der Daten in einen Zielpuffer auf dem lokalen Knoten.
    • 6. Verfahren nach einer der vorhergehenden Klauseln, das ferner Folgendes umfasst: Durchführen eines RMA-Lesevorgangs, bei dem Daten aus dem entfernten Knoten gelesen und an den lokalen Knoten übertragen werden, wofür eine Vielzahl von Paketen verwendet wird, wobei Daten für jedes der Vielzahl von Paketen übertragen werden, durch Senden einer jeweiligen AM-Leseanforderung an den AM-Handler auf dem entfernten Knoten, wobei die AM-Leseanforderung einen Adressbereich im entfernten Adressraum mit zu lesenden Paketdaten identifiziert; in Ansprechen auf das Empfangen der AM-Leseanforderungsnachricht Abrufen der zu lesenden Paketdaten aus dem entfernten Adressraum über den AM-Handler auf dem entfernten Knoten und Senden der abgerufenen Paketdaten an den lokalen Knoten über eine AM-Leseantwortnachricht; und Behandeln der AM-Leseantwort mit einem AM-Handler auf dem lokalen Knoten durch Extrahieren der Paketdaten aus der AM-Leseantwort und Schreiben der Paketdaten in einen Zielpuffer auf dem lokalen Knoten.
    • 7. Verfahren nach einer der vorhergehenden Klauseln, das ferner Folgendes umfasst: Einsetzen einer getaggten Nachricht für die erste AM-Schreibanforderung unter Verwendung eines Schemas für die Übermittlung getaggter Nachrichten; und Einsetzen des AM-Handlers auf dem entfernten Knoten, um die getaggte Nachricht zu prüfen, um zu verifizieren, dass der entfernte Knoten der vorgesehene Empfänger der ersten AM-Schreibanforderung ist.
    • 8. Verfahren nach einer der vorhergehenden Klauseln, das ferner Registrieren mindestens eines Adressbereichs im Adressraum eines entfernten Speichers auf dem entfernten Knoten, in den Daten geschrieben werden können, wofür eine oder mehrere vom entfernten Knoten gesendete AM-Schreibanforderungen verwendet werden, am lokalen Knoten umfasst.
    • 9. Verfahren nach Klausel 8, das ferner Folgendes umfasst: Veröffentlichen eines Zugriffsschlüssels für den entfernten Knoten entsprechend mindestens einem beim lokalen Knoten registrierten Adressbereich; Aufnehmen des Zugriffsschlüssels in die erste AM-Schreibanforderung; und Prüfen des Zugriffsschlüssels über den AM-Handler auf dem entfernten Knoten, um zu validieren, ob die erste AM-Schreibanforderung zulässig ist.
    • 10. Nichtflüchtiges maschinenlesbares Medium, auf dem ein erster Satz und ein zweiter Satz von Befehlen gespeichert sind, die dafür konfiguriert sind, um jeweils auf einem lokalen und einem entfernten Knoten ausgeführt zu werden, um das Verfahren nach einer der vorhergehenden Klauseln zu implementieren.
    • 11. Verfahren zum Durchführen von Remote-Memory-Access(RMA)-Datenübertragungen zwischen einem entfernten Knoten und einem lokalen Knoten, wobei das Verfahren Folgendes umfasst: Durchführen eines RMA-Schreibvorgangs, bei dem Daten aus dem lokalen Knoten in den entfernten Knoten geschrieben werden, durch Senden einer ersten Active-Message(AM)-Schreibanforderung vom lokalen Knoten an einen AM-Handler auf dem entfernten Knoten, wobei die erste AM-Schreibanforderung einen Adressbereich in einem Adressraum eines entfernten Speichers auf dem entfernten Knoten identifiziert, wohin die Daten zu schreiben sind; Lesen von zu schreibenden Daten aus einem Quellpuffer auf dem lokalen Knoten und Senden der Daten an den entfernten Knoten; Verarbeiten der Daten, die durch den entfernten Knoten empfangen werden, um zu bewirken, dass die in den Adressraum eines entfernten Speichers zu schreibenden Daten den in der ersten AM-Schreibanforderung identifizierten Adressbereich belegen.
    • 12. Verfahren nach Klausel 11, das ferner Folgendes umfasst: Empfangen einer Vielzahl von AM-Schreibanforderungen, wobei jede AM-Schreibanforderung einen Adressbereich im Adressraum eines entfernten Speichers auf dem entfernten Knoten identifiziert, wohin ein Block von mit dieser AM-Schreibanforderung assoziierten Daten, die anschließend zu senden sind, zu schreiben ist, wobei jede AM-Schreibanforderung Indikatoren beinhaltet, die den Block assoziierter Daten identifizieren; Einreihen jeder AM-Schreibanforderung in eine RMA-Schreibwarteschlange auf dem entfernten Knoten über den AM-Handler auf dem entfernten Knoten; Empfangen einer Vielzahl von Blöcken von Daten vom lokalen Knoten, wobei jeder Block von Daten mit einer zuvor empfangenen AM-Schreibanforderung assoziiert ist und Indikatoren enthält, aus denen die zuvor empfangene AM-Schreibanforderung identifiziert werden kann; Entfernen der AM-Schreibanforderungen aus der RMA-Schreibwarteschlange; und Verarbeiten jeder aus der Warteschlange entfernten AM-Schreibanforderung, um zu bestimmen, wohin der empfangene Block von Daten, der mit dieser AM-Schreibanforderung assoziiert ist, im Adressraum eines entfernten Speichers zu schreiben ist.
    • 13. Verfahren nach Klausel 11 oder 12, das ferner Durchführen eines RMA-Lesevorgangs, bei dem Daten aus dem entfernten Knoten gelesen und an den lokalen Knoten übertragen werden, durch Folgendes umfasst: Senden einer AM-Leseanforderung an den AM-Handler auf dem entfernten Knoten, wobei die AM-Leseanforderung einen Adressbereich im entfernten Adressraum mit zu lesenden Daten identifiziert; in Ansprechen auf das Empfangen der AM-Leseanforderungsnachricht Generieren einer RMA-Leseanforderung, die der AM-Leseanforderung entspricht, die den Adressbereich im entfernten Adressraum mit zu lesenden Daten identifiziert, über den AM-Handler auf dem entfernten Knoten; Verarbeiten der RMA-Leseanforderung auf dem entfernten Knoten, woraus resultiert, dass die Daten, die aus dem entfernten Adressraum, wie durch den Adressbereich in der RMA-Leseanforderung definiert, zu lesen sind, aus dem entfernten Adressraum abgerufen und an den lokalen Knoten gesendet werden; und Schreiben der abgerufenen Daten, die vom entfernten Knoten gesendet werden, in einen Zielpuffer auf dem lokalen Knoten.
    • 14. Verfahren nach Klausel 13, das ferner Folgendes umfasst: in Ansprechen auf das Empfangen der AM-Leseanforderungsnachricht Generieren und Einreihen einer RMA-Leseanforderung, die der AM-Leseanforderung entspricht, in eine RMA-Leseanforderungswarteschlange auf dem entfernten Knoten, die den Adressbereich im entfernten Adressraum mit zu lesenden Daten identifiziert, über den AM-Handler auf dem entfernten Knoten; Entfernen der RMA-Leseanforderung aus der RMA-Leseanforderungswarteschlange; und Abrufen der zu lesenden Daten aus dem entfernten Adressraum, wie durch den Adressbereich in der RMA-Leseanforderung definiert, und Senden der abgerufenen Daten an den lokalen Knoten.
    • 15. Verfahren nach Klausel 14, wobei die Warteschlangenentfernungs-, Datenabruf- und Sendeoperationen durch eine RMA-Lesefunktion auf dem entfernten Knoten, der vom AM-Handler auf dem entfernten Knoten separat ist, durchgeführt werden.
    • 16. Verfahren nach einer der Klauseln 11–15, das ferner Registrieren mindestens eines Adressbereichs im Adressraum eines entfernten Speichers auf dem entfernten Knoten, in den Daten geschrieben werden können, wofür eine oder mehrere vom entfernten Knoten gesendete AM-Schreibanforderungen verwendet werden, am lokalen Knoten umfasst.
    • 17. Verfahren nach Klausel 16, das ferner Folgendes umfasst: Veröffentlichen eines Zugriffsschlüssels für den entfernten Knoten entsprechend mindestens einem beim lokalen Knoten registrierten Adressbereich; Aufnehmen des Zugriffsschlüssels in die erste AM-Schreibanforderung; und Prüfen des Zugriffsschlüssels über den AM-Handler auf dem entfernten Knoten, um zu validieren, ob die erste AM-Schreibanforderung zulässig ist.
    • 18. Nichtflüchtiges maschinenlesbares Medium, auf dem ein erster und ein zweiter Satz von Befehlen gespeichert sind, die dafür konfiguriert sind, um jeweils auf einem lokalen und einem entfernten Knoten ausgeführt zu werden, um das Verfahren nach einer der Klauseln 11–17 zu implementieren.
    • 19. Vorrichtung, die Folgendes umfasst: eine Netzschnittstelle; einen Speicher, der einen Adressraum eines lokalen Speichers beinhaltet; einen Schreibanforderungs-Active-Message(AM)-Handler, der dafür konfiguriert ist, um über die Netzschnittstelle eine erste AM-Schreibanforderung zu empfangen, die von einer entfernten Vorrichtung über eine an die Netzschnittstelle gekoppelte Kommunikationsstrecke gesendet wird, wobei die erste AM-Schreibanforderung, die einem Remote-Memory-Access(RMA)-Schreibvorgang entspricht, durch die entfernte Vorrichtung ausgegeben wird und erste Daten enthält, die an einer Anfangsadresse im Adressraum eines lokalen Speichers im Speicher zu schreiben sind, wohin die Daten zu schreiben sind; die erste AM-Schreibanforderung zu behandeln, indem sie die Daten aus der ersten AM-Schreibanforderung extrahiert und die Daten in einen Adressbereich im Adressraum eines entfernten Speichers beginnend bei der Anfangsadresse schreibt; und eine AM-Schreibantwort an die entfernte Vorrichtung zu senden, die angibt, dass die Daten erfolgreich in den Adressraum eines entfernten Speichers geschrieben wurden.
    • 20. Vorrichtung nach Klausel 19, die ferner Folgendes umfasst: ein RMA-Schreibmodul, das dafür konfiguriert ist, um eine AM-Schreiboperation durchzuführen, bei der eine zweite AM-Schreibanforderung, die einem RMA-Vorgang zum Schreiben in einen Adressraum eines entfernten Speichers im Speicher auf der entfernten Vorrichtung entspricht, generiert und an die entfernte Vorrichtung gesendet wird, wobei die zweite AM-Schreibanforderung zweite Daten enthält, die an einer Anfangsadresse im Adressraum eines entfernten Speichers zu schreiben sind, wohin die Daten zu schreiben sind; und einen Schreibantwort-AM-Handler, der dafür konfiguriert ist, um eine AM-Schreibantwort zu verarbeiten, die von der entfernten Vorrichtung gesendet wird, nachdem die zweiten Daten erfolgreich in den Adressraum eines entfernten Speichers geschrieben worden sind.
    • 21. Vorrichtung nach Klausel 20, die ferner einen Quellpuffer umfasst, und wobei das RMA-Schreibmodul ferner dafür konfiguriert ist, um: in den Adressraum eines entfernten Speichers zu schreibende dritte Daten in eine Vielzahl von Paketen zu partitionieren; für jedes der Vielzahl von Paketen diesem Paket entsprechende Paketdaten aus dem Quellpuffer zu lesen; und eine jeweilige AM-Schreibanforderung an einen Schreibanforderungs-AM-Handler auf der entfernten Vorrichtung zu senden, die die Paketdaten und eine jeweilige Anfangsadresse im Adressraum eines entfernten Speichers auf der entfernten Vorrichtung enthält, wohin die Paketdaten zu schreiben sind.
    • 22. Vorrichtung nach einer der Klauseln 19–21, wobei der Schreibanforderungs-AM-Handler ferner dafür konfiguriert ist, um: eine Vielzahl von AM-Schreibanforderungen von der entfernten Vorrichtung zu empfangen, wobei jede der Vielzahl von AM-Schreibanforderungen jeweilige Paketdaten enthält, die einem entfernten Vorgang zum Schreiben dritter Daten entsprechen, die in eine Vielzahl von Paketen partitioniert sind und an einer jeweiligen Anfangsadresse im Adressraum eines lokalen Speichers in den Adressraum eines lokalen Speichers zu schreiben sind; die Paketdaten für jede der Vielzahl von AM-Schreibanforderungen zu extrahieren und die Paketdaten beginnend bei der durch diese AM-Schreibanforderung identifizierten Anfangsadresse in den Adressraum eines lokalen Speichers zu schreiben; zu detektieren, dass eine Gesamtheit der dritten Daten in den Adressraum eines lokalen Speichers geschrieben wurde; und eine AM-Schreibantwort an die entfernte Vorrichtung zu senden, die angibt, dass die dritten Daten erfolgreich in den Adressraum eines lokalen Speichers geschrieben wurden.
    • 23. Vorrichtung nach einer der Klauseln 19–22, die ferner Folgendes umfasst: einen Zielpuffer im lokalen Speicher; einen Leseantwort-AM-Handler; und ein RMA-Lesemodul, das dafür konfiguriert ist, um eine AM-Leseanforderung zu generieren und an einen Leseanforderungs-AM-Handler auf der entfernten Vorrichtung zu senden, wobei die AM-Leseanforderung einen Adressbereich im entfernten Adressraum mit zu lesenden Daten der entfernten Vorrichtung identifiziert; in Ansprechen auf die AM-Leseanforderung eine AM-Leseantwort, die die aus dem entfernten Adressraum gelesenen Daten enthält, von der entfernten Vorrichtung zu empfangen; und die AM-Leseantwort mit dem Leseantwort-AM-Handler durch Extrahieren der Daten aus der AM-Leseantwort und Schreiben der Daten in den Zielpuffer zu behandeln.
    • 24. Vorrichtung nach einer der Klauseln 19–23, wobei das RMA-Lesemodul ferner dafür konfiguriert ist, um einen RMA-Lesevorgang durchzuführen, bei dem Daten aus der entfernten Vorrichtung gelesen und übertragen werden, wofür eine Vielzahl von Paketen verwendet wird, wobei Daten für jedes der Vielzahl von Paketen entfernt gelesen werden, durch Senden einer jeweiligen AM-Leseanforderung an den AM-Leseanforderungshandler auf der entfernten Vorrichtung, wobei die AM-Leseanforderung einen Adressbereich im entfernten Adressraum mit zu lesenden Paketdaten identifiziert; in Ansprechen auf jede jeweilige AM-Leseanforderung Empfangen einer AM-Leseantwort, die die aus dem entfernten Adressraum gelesenen Paketdaten enthält, von der entfernten Vorrichtung; und Behandeln der AM-Leseantwort mit dem Leseantwort-AM-Handler durch Extrahieren der Paketdaten aus der AM-Leseantwort und Schreiben der Paketdaten in den Zielpuffer.
    • 25. Vorrichtung nach einer der Klauseln 19–24, die ferner Folgendes umfasst: einen Leseanforderungs-AM-Handler, der dafür konfiguriert ist, um eine AM-Leseanforderung von der entfernten Vorrichtung zu empfangen, die einen Adressbereich im lokalen Adressraum mit Daten, der zu lesende Daten enthält, identifiziert; die Daten aus dem in der AM-Leseanforderung identifizierten Adressraum abzurufen; und eine AM-Antwort an die entfernte Vorrichtung zu senden, die die Daten enthält, die abgerufen werden.
    • 26. Vorrichtung, die Folgendes umfasst: eine Netzschnittstelle; einen Speicher, der einen Adressraum eines lokalen Speichers beinhaltet; einen Schreibanforderungs-Active-Message(AM)-Handler, der dafür konfiguriert ist, um über die Netzschnittstelle eine Vielzahl von AM-Schreibanforderungen zu empfangen, die von einer entfernten Vorrichtung über eine an die Netzschnittstelle gekoppelte Kommunikationsstrecke gesendet werden, wobei jede AM-Schreibanforderung, die einem Remote-Memory-Access(RMA)-Schreibvorgang entspricht, durch die entfernte Vorrichtung ausgegeben wird und jeweilige Daten, die in den Adressraum eines lokalen Speichers zu schreiben sind, und eine Anfangsadresse, wohin ein Anfang der jeweiligen Daten zu schreiben ist, enthält; und eine RMA-Schreibanforderung zu generieren und die RMA-Schreibanforderung in eine RMA-Schreibwarteschlange einzureihen; und ein RMA-Fortschrittmodul, das dafür konfiguriert ist, um: eine Vielzahl von Blöcken von Daten von der entfernten Vorrichtung zu empfangen, wobei jeder Block von Daten mit einer zuvor empfangenen AM-Schreibanforderung assoziiert ist und Indikatoren enthält, aus denen eine entsprechende RMA-Schreibanforderung identifiziert werden kann; die RMA-Schreibanforderungen aus der RMA-Schreibwarteschlange zu entfernen; und jede aus der Warteschlange entfernte RMA-Schreibanforderung zu verarbeiten, um zu bestimmen, wohin der empfangene Block von Daten, der mit dieser RMA-Schreibanforderung assoziiert ist, im Adressraum eines lokalen Speichers zu schreiben ist.
    • 27. Vorrichtung nach Klausel 26, die ferner Folgendes umfasst: einen Quellpuffer im Speicher; und ein RMA-Schreibmodul, das dafür konfiguriert ist, um eine AM-Schreibanforderung an die entfernte Vorrichtung zu senden, wobei die AM-Schreibanforderung einen Adressbereich in einem Adressraum eines entfernten Speichers im Speicher auf der entfernten Vorrichtung, in den die Daten zu schreiben sind, identifiziert; die zu schreibenden Daten aus dem Quellpuffer zu lesen; und die Daten an die entfernte Vorrichtung zu senden, wobei die Daten im Anschluss an das Senden der AM-Schreibanforderung gesendet werden und die Daten zusammen mit Indikatoren gesendet werden, die dafür konfiguriert sind, um die Daten, die gesendet werden, mit der AM-Schreibanforderung abzugleichen.
    • 28. Vorrichtung nach Klausel 26 oder 27, die ferner Folgendes umfasst: eine RMA-Leseanforderungswarteschlange; einen Leseanforderungs-AM-Handler, der dafür konfiguriert ist, um eine AM-Leseanforderung von der entfernten Vorrichtung zu empfangen, die einen Adressbereich im lokalen Adressraum mit zu lesenden Daten identifiziert; in Ansprechen auf das Empfangen der AM-Leseanforderungsnachricht eine entsprechende RMA-Leseanforderung zu generieren, die den Adressbereich im lokalen Adressraum mit zu lesenden Daten identifiziert; und die RMA-Leseanforderung in die RMA-Leseanforderungswarteschlange einzureihen; und ein RMA-Fortschrittmodul, das dafür konfiguriert ist, um die RMA-Leseanforderung aus der RMA-Leseanforderungswarteschlange zu entfernen; Daten aus dem lokalen Adressraum, wie durch den Adressbereich in der RMA-Leseanforderung definiert, zu lesen; und die Daten, die gelesen werden, an die entfernte Vorrichtung zu senden.
    • 29. Vorrichtung nach Klausel 28, die ferner Folgendes umfasst: einen Zielpuffer, der einen Teil des Speichers belegt; und ein RMA-Lesemodul, das dafür konfiguriert ist, um eine AM-Leseanforderung an die entfernte Vorrichtung zu senden, wobei die AM-Leseanforderung einen Adressbereich in einem zu lesenden entfernten Adressraum im Speicher auf der entfernten Vorrichtung identifiziert; von der entfernten Vorrichtung Daten zu empfangen, die aus dem entfernten Adressraum gelesen wurden; und die empfangenen Daten in den Zielpuffer zu schreiben.
    • 30. Nichtflüchtiges maschinenlesbares Medium, auf dem Befehle gespeichert sind, die dafür konfiguriert sind, um auf einem Knoten ausgeführt zu werden, der eine Netzschnittstelle und einen Speicher beinhaltet, der einen lokalen Adressraum beinhaltet, wobei die Befehle Folgendes beinhalten: einen Schreibanforderungs-Active-Message(AM)-Handler, der dafür konfiguriert ist, um, wenn er ausgeführt wird, über die Netzschnittstelle eine erste AM-Schreibanforderung zu empfangen, die von einer entfernten Vorrichtung über eine an die Netzschnittstelle gekoppelte Kommunikationsstrecke gesendet wird, wobei die erste AM-Schreibanforderung, die einem Remote-Memory-Access(RMA)-Schreibvorgang entspricht, durch die entfernte Vorrichtung ausgegeben wird und erste Daten enthält, die an einer Anfangsadresse im Adressraum eines lokalen Speichers im Speicher zu schreiben sind, wohin die Daten zu schreiben sind; die erste AM-Schreibanforderung durch Extrahieren der Daten aus der ersten AM-Schreibanforderung und Schreiben der Daten in einen Adressbereich im Adressraum eines entfernten Speichers beginnend bei der Anfangsadresse zu behandeln; und eine AM-Schreibantwort an die entfernte Vorrichtung zu senden, die angibt, dass die Daten erfolgreich in den Adressraum eines entfernten Speichers geschrieben wurden.
    • 31. Nichtflüchtiges maschinenlesbares Medium nach Klausel 30, das ferner Befehle beinhaltet, die Folgendes umfassen: ein RMA-Schreibmodul, das dafür konfiguriert ist, um eine AM-Schreiboperation durchzuführen, bei der eine zweite AM-Schreibanforderung, die einem RMA-Vorgang zum Schreiben in einen Adressraum eines entfernten Speichers im Speicher auf der entfernten Vorrichtung entspricht, generiert und an die entfernte Vorrichtung gesendet wird, wobei die zweite AM-Schreibanforderung zweite Daten enthält, die an einer Anfangsadresse im Adressraum eines entfernten Speichers zu schreiben sind, wohin die Daten zu schreiben sind; und einen Schreibantwort-AM-Handler, der dafür konfiguriert ist, um eine AM-Schreibantwort zu verarbeiten, die von der entfernten Vorrichtung gesendet wird, nachdem die zweiten Daten erfolgreich in den Adressraum eines entfernten Speichers geschrieben worden sind.
    • 32. Nichtflüchtiges maschinenlesbares Medium nach Klausel 31, wobei der Knoten ferner einen Quellpuffer umfasst, und wobei das RMA-Schreibmodul ferner dafür konfiguriert ist, um: in den Adressraum eines entfernten Speichers zu schreibende dritte Daten in eine Vielzahl von Paketen zu partitionieren; für jedes der Vielzahl von Paketen diesem Paket entsprechende Paketdaten aus dem Quellpuffer zu lesen; und eine jeweilige AM-Schreibanforderung an einen Schreibanforderungs-AM-Handler auf der entfernten Vorrichtung zu senden, die die Paketdaten und eine jeweilige Anfangsadresse im Adressraum eines entfernten Speichers auf der entfernten Vorrichtung enthält, wohin die Paketdaten zu schreiben sind.
    • 33. Nichtflüchtiges maschinenlesbares Medium nach einer der Klauseln 30–32, wobei der Schreibanforderungs-AM-Handler ferner dafür konfiguriert ist, um: eine Vielzahl von AM-Schreibanforderungen von der entfernten Vorrichtung zu empfangen, wobei jede der Vielzahl von AM-Schreibanforderungen jeweilige Paketdaten enthält, die einem entfernten Vorgang zum Schreiben dritter Daten entsprechen, die in eine Vielzahl von Paketen partitioniert sind und an einer jeweiligen Anfangsadresse im Adressraum eines lokalen Speichers in den Adressraum eines lokalen Speichers zu schreiben sind; die Paketdaten für jede der Vielzahl von AM-Schreibanforderungen zu extrahieren und die Paketdaten beginnend bei der durch diese AM-Schreibanforderung identifizierten Anfangsadresse in den Adressraum eines lokalen Speichers zu schreiben; zu detektieren, dass eine Gesamtheit der dritten Daten in den Adressraum eines lokalen Speichers geschrieben wurde; und eine AM-Schreibantwort an die entfernte Vorrichtung zu senden, die angibt, dass die dritten Daten erfolgreich in den Adressraum eines lokalen Speichers geschrieben wurden.
    • 34. Nichtflüchtiges maschinenlesbares Medium nach einer der Klauseln 30–33, wobei der Knoten ferner einen Zielpuffer im lokalen Speicher umfasst und die Befehle ferner Folgendes umfassen: einen Leseantwort-AM-Handler; und ein RMA-Lesemodul, das dafür konfiguriert ist, um bei der Ausführung eine AM-Leseanforderung zu generieren und an einen Leseanforderungs-AM-Handler auf der entfernten Vorrichtung zu senden, wobei die AM-Leseanforderung einen Adressbereich im entfernten Adressraum mit zu lesenden Daten der entfernten Vorrichtung identifiziert; in Ansprechen auf die AM-Leseanforderung eine AM-Leseantwort, die die aus dem entfernten Adressraum gelesenen Daten enthält, von der entfernten Vorrichtung zu empfangen; und die AM-Leseantwort mit dem Leseantwort-AM-Handler durch Extrahieren der Daten aus der AM-Leseantwort und Schreiben der Daten in den Zielpuffer zu behandeln.
    • 35. Nichtflüchtiges maschinenlesbares Medium nach einer der Klauseln 30–34, wobei das RMA-Lesemodul ferner dafür konfiguriert ist, um einen RMA-Lesevorgang durchzuführen, bei dem Daten aus der entfernten Vorrichtung gelesen und übertragen werden, wofür eine Vielzahl von Paketen verwendet wird, wobei Daten für jedes der Vielzahl von Paketen entfernt gelesen werden, durch Senden einer jeweiligen AM-Leseanforderung an den AM-Leseanforderungshandler auf der entfernten Vorrichtung, wobei die AM-Leseanforderung einen Adressbereich im entfernten Adressraum mit zu lesenden Paketdaten identifiziert; in Ansprechen auf jede jeweilige AM-Leseanforderung Empfangen einer AM-Leseantwort, die die aus dem entfernten Adressraum gelesenen Paketdaten enthält, von der entfernten Vorrichtung; und Behandeln der AM-Leseantwort mit dem Leseantwort-AM-Handler durch Extrahieren der Paketdaten aus der AM-Leseantwort und Schreiben der Paketdaten in den Zielpuffer.
    • 36. Nichtflüchtiges maschinenlesbares Medium nach einer der Klauseln 30–35, wobei die Befehle ferner Folgendes umfassen: einen Leseanforderungs-AM-Handler, der dafür konfiguriert ist, um eine AM-Leseanforderung von der entfernten Vorrichtung zu empfangen, die einen Adressbereich im lokalen Adressraum mit Daten, der zu lesende Daten enthält, identifiziert; die Daten aus dem in der AM-Leseanforderung identifizierten Adressraum abzurufen; und eine AM-Antwort an die entfernte Vorrichtung zu senden, die die Daten enthält, die abgerufen werden.
    • 37. Nichtflüchtiges maschinenlesbares Medium, auf dem Befehle gespeichert sind, die dafür konfiguriert sind, um auf einem Knoten ausgeführt zu werden, der eine Netzschnittstelle und einen Speicher beinhaltet, der einen lokalen Adressraum beinhaltet, wobei die Befehle Folgendes beinhalten: einen Schreibanforderungs-Active-Message(AM)-Handler, der dafür konfiguriert ist, um bei der Ausführung über die Netzschnittstelle eine Vielzahl von AM-Schreibanforderungen zu empfangen, die von einer entfernten Vorrichtung über eine an die Netzschnittstelle gekoppelte Kommunikationsstrecke gesendet werden, wobei jede AM-Schreibanforderung, die einem Remote-Memory-Access(RMA)-Schreibvorgang entspricht, durch die entfernte Vorrichtung ausgegeben wird und jeweilige Daten, die in den Adressraum eines lokalen Speichers zu schreiben sind, und eine Anfangsadresse, wohin ein Anfang der jeweiligen Daten zu schreiben ist, enthält; und eine RMA-Schreibanforderung zu generieren und die RMA-Schreibanforderung in eine RMA-Schreibwarteschlange einzureihen; und ein RMA-Fortschrittmodul, das dafür konfiguriert ist, um bei der Ausführung eine Vielzahl von Blöcken von Daten von der entfernten Vorrichtung zu empfangen, wobei jeder Block von Daten mit einer zuvor empfangenen AM-Schreibanforderung assoziiert ist und Indikatoren enthält, aus denen eine entsprechende RMA-Schreibanforderung identifiziert werden kann; die RMA-Schreibanforderungen aus der RMA-Schreibwarteschlange zu entfernen; und jede aus der Warteschlange entfernte RMA-Schreibanforderung zu verarbeiten, um zu bestimmen, wohin der empfangene Block von Daten, der mit dieser RMA-Schreibanforderung assoziiert ist, im Adressraum eines lokalen Speichers zu schreiben ist.
    • 38. Nichtflüchtiges maschinenlesbares Medium nach Klausel 37, wobei der Knoten ferner einen Quellpuffer im Speicher umfasst, und wobei die Befehle ferner Folgendes umfassen: ein RMA-Schreibmodul, das dafür konfiguriert ist, um bei der Ausführung eine AM-Schreibanforderung an die entfernte Vorrichtung zu senden, wobei die AM-Schreibanforderung einen Adressbereich in einem Adressraum eines entfernten Speichers im Speicher auf der entfernten Vorrichtung, in den die Daten zu schreiben sind, identifiziert; die zu schreibenden Daten aus dem Quellpuffer zu lesen; und die Daten an die entfernte Vorrichtung zu senden, wobei die Daten im Anschluss an das Senden der AM-Schreibanforderung gesendet werden und die Daten zusammen mit Indikatoren gesendet werden, die dafür konfiguriert sind, um die Daten, die gesendet werden, mit der AM-Schreibanforderung abzugleichen.
    • 39. Nichtflüchtiges maschinenlesbares Medium nach Klausel 37 oder 38, wobei der Knoten ferner eine RMA-Leseanforderungswarteschlange umfasst, und wobei die Befehle ferner Folgendes umfassen: einen Leseanforderungs-AM-Handler, der dafür konfiguriert ist, um bei der Ausführung eine AM-Leseanforderung von der entfernten Vorrichtung zu empfangen, die einen Adressbereich im lokalen Adressraum mit zu lesenden Daten identifiziert; in Ansprechen auf das Empfangen der AM-Leseanforderungsnachricht eine entsprechende RMA-Leseanforderung zu generieren, die den Adressbereich im lokalen Adressraum mit zu lesenden Daten identifiziert; und die RMA-Leseanforderung in die RMA-Leseanforderungswarteschlange einzureihen; und ein RMA-Fortschrittmodul, das dafür konfiguriert ist, um die RMA-Leseanforderung aus der RMA-Leseanforderungswarteschlange zu entfernen; Daten aus dem lokalen Adressraum, wie durch den Adressbereich in der RMA-Leseanforderung definiert, zu lesen; und die Daten, die gelesen werden, an die entfernte Vorrichtung zu senden.
    • 40. Nichtflüchtiges maschinenlesbares Medium nach Klausel 39, wobei der Knoten ferner einen Zielpuffer umfasst, der einen Teil des Speichers belegt, und wobei die Befehle ferner Folgendes umfassen: ein RMA-Lesemodul, das dafür konfiguriert ist, um bei der Ausführung eine AM-Leseanforderung an die entfernte Vorrichtung zu senden, wobei die AM-Leseanforderung einen Adressbereich in einem zu lesenden entfernten Adressraum im Speicher auf der entfernten Vorrichtung identifiziert; von der entfernten Vorrichtung Daten zu empfangen, die aus dem entfernten Adressraum gelesen wurden; und die empfangenen Daten in den Zielpuffer zu schreiben.
  • Wenngleich einige Ausführungsformen in Bezug auf konkrete Implementierungen beschrieben wurden, sind gemäß einigen Ausführungsformen noch andere Implementierungen möglich. Darüber hinaus müssen die Anordnung und/oder die Reihenfolge von Elementen oder anderen Merkmalen, die in den Zeichnungen veranschaulicht und/oder hierin beschrieben werden, nicht in der konkreten Weise angeordnet sein, die veranschaulicht und beschrieben wird. Es sind noch viele andere Anordnungen gemäß einigen Ausführungsformen möglich.
  • In jedem System, das in einer Figur gezeigt wird, können die Elemente in einigen Fällen je ein selbes Bezugszeichen oder ein anderes Bezugszeichen aufweisen, um darauf hinzuweisen, dass die dargestellten Elemente anders und/oder ähnlich sein könnten. Jedoch ist ein Element möglicherweise so flexibel, dass es unterschiedliche Implementierungen aufweisen und mit einigen oder allen der hierin gezeigten oder beschriebenen Systeme zusammenwirken kann. Die verschiedenen Elemente, die in den Figuren gezeigt werden, können gleich oder unterschiedlich sein. Welches von ihnen als erstes Element bezeichnet und welches zweites Element genannt wird, ist willkürlich.
  • In der Beschreibung und den Ansprüchen werden möglicherweise die Begriffe „gekoppelt“ und „verbunden“ nebst ihren Ableitungen verwendet. Es versteht sich, dass diese Begriffe keine Synonyme füreinander sein sollen. Vielmehr kann „verbunden“ in konkreten Ausführungsformen verwendet werden, um anzugeben, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt miteinander sind. „Gekoppelt“ kann bedeuten, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt sind. „Gekoppelt“ kann aber auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, aber trotzdem zusammenarbeiten oder miteinander interagieren.
  • Ein Algorithmus wird hier, und allgemein, als folgerichtiger Ablauf von Einzelschritten oder Operationen angesehen, die zu einem gewünschten Ergebnis führen. Dazu gehören physikalische Manipulationen physikalischer Größen. Gewöhnlich, wenn auch nicht notwendigerweise, nehmen diese Größen die Form elektrischer oder magnetischer Signale an, die gespeichert, übertragen, kombiniert, verglichen und anderweitig manipuliert werden können. Es hat sich, vornehmlich aus Gründen des allgemeinen Sprachgebrauchs, bisweilen als praktisch erwiesen, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen. Es versteht sich jedoch, dass all diese und ähnliche Begriffe mit den zugehörigen physikalischen Größen zu assoziieren und lediglich praktische Benennungen sind, die auf diese Größen angewendet werden.
  • Eine Ausführungsform ist eine Implementierung oder ein Beispiel der Erfindungen. Eine Bezugnahme in der Patentbeschreibung auf „eine Ausführungsform“, „einige Ausführungsformen“ oder „andere Ausführungsformen“ bedeutet, dass ein konkretes Merkmal, eine konkrete Struktur oder eine konkrete Eigenschaft, das bzw. die in Verbindung mit den Ausführungsformen beschrieben wird, in mindestens einigen Ausführungsformen, jedoch nicht notwendigerweise in allen Ausführungsformen der Erfindungen beinhaltet ist. Die verschiedenen Nennungen von „eine Ausführungsform“ oder „einige Ausführungsformen“ beziehen sich nicht zwangsläufig alle auf dieselben Ausführungsformen.
  • Nicht alle Komponenten, Merkmale, Strukturen, Eigenschaften etc., die hierin beschrieben und veranschaulicht werden, müssen in einer konkreten Ausführungsform oder konkreten Ausführungsformen beinhaltet sein. Falls in der Patentbeschreibung steht, dass Komponenten, Merkmale, Strukturen oder Eigenschaften zum Beispiel „möglicherweise“ beinhaltet sind, beinhaltet sein „können“ oder „könnten“, müssen diese konkreten Komponenten, Merkmale, Strukturen oder Eigenschaften nicht zwangsläufig beinhaltet sein. Falls die Patentbeschreibung oder ein Anspruch Bezug auf „ein“ Element nimmt, bedeutet dies nicht, dass nur ein solches Element vorhanden ist. Falls die Patentbeschreibung oder die Ansprüche Bezug auf „ein zusätzliches“ Element nehmen, wird dadurch nicht ausgeschlossen, dass auch mehr als ein solches zusätzliches Element vorhanden sein kann.
  • Wie oben erörtert, können verschiedene Aspekte der Ausführungsformen hierin durch entsprechende Software und/oder eingebettete Komponenten und Anwendungen ermöglicht werden, etwa Software, die auf einem Server oder einem Einrichtungsprozessor läuft, oder Software und/oder Firmware, die von einem eingebetteten Prozessor oder dergleichen ausgeführt wird. Mithin können Ausführungsformen dieser Erfindung verwendet werden als oder zur Unterstützung für Software-Programme, Software-Module, Firmware und/oder verteilte Software, die auf einem Verarbeitungskern in irgendeiner Form ausgeführt werden/wird (etwa der CPU eines Computers, einem oder mehreren Kernen eines Mehrkernprozessors), eine virtuelle Maschine, die auf einem Prozessor oder einem Kern läuft oder sonst auf oder in einem computerlesbaren oder maschinenlesbaren nicht transienten Speichermedium implementiert oder realisiert ist. Ein computerlesbares oder maschinenlesbares nicht transientes Speichermedium beinhaltet einen beliebigen Mechanismus zum Speichern oder Übermitteln von Informationen in einer von einer Maschine (z. B. einem Computer) lesbaren Form. Ein computerlesbares oder maschinenlesbares nicht transientes Speichermedium beinhaltet zum Beispiel einen beliebigen Mechanismus, der Informationen in einer für einen Computer oder eine Rechenmaschine (z. B. eine Recheneinrichtung, ein elektronisches System etc.) zugänglichen Form bereitstellt, etwa beschreibbare/nicht beschreibbare Medien (z. B. Nur-Lese-Speicher (ROM), Speicher mit wahlfreiem Zugriff (RAM), Magnetplattenspeichermedien, optische Speichermedien, Flash-Speichereinrichtungen etc.). Der Inhalt kann direkt ausführbar („Objekt“- oder „ausführbare“ Form), ein Quellcode oder ein Differenzcode („Delta“- oder „Patch“-Code) sein. Ein computerlesbares oder maschinenlesbares nicht transientes Speichermedium kann auch ein Datenspeicherelement oder eine Datenbank beinhalten, von dem bzw. der Inhalt heruntergeladen werden kann. Das computerlesbare oder maschinenlesbare nicht transiente Speichermedium kann auch eine Einrichtung oder ein Produkt beinhalten, auf der bzw. dem zum Zeitpunkt eines Verkaufs oder einer Auslieferung Inhalt gespeichert ist. Mithin lässt sich die Auslieferung einer Einrichtung mit gespeichertem Inhalt oder das Anbieten von Inhalt zum Herunterladen über ein Kommunikationsmedium so verstehen, dass ein Erzeugnis bereitgestellt wird, das ein computerlesbares oder maschinenlesbares nicht transientes Speichermedium mit derartigem Inhalt, der hierin beschrieben wird, umfasst.
  • Verschiedene Komponenten, die oben als Prozesse, Server oder Tools, die hierin beschrieben werden, bezeichnet werden, können ein Mittel zum Durchführen der beschriebenen Funktionen sein. Die Operationen und Funktionen, die von verschiedenen hierin beschriebenen Komponenten durchgeführt werden, sind implementierbar durch auf einem Verarbeitungselement laufende Software, über eingebettete Hardware oder dergleichen oder eine beliebige Kombination aus Hardware und Software. Solche Komponenten sind implementierbar als Software-Module, Hardware-Module, spezielle Hardware (z. B. anwendungsspezifische Hardware, ASICs, DSPs etc.), eingebettete Controller, festverdrahtete Schaltkreise, Hardware-Logik etc. Software-Inhalt (z. B. Daten, Befehle, Konfigurationsinformationen etc.) kann über ein Erzeugnis bereitgestellt werden, das ein computerlesbares oder maschinenlesbares nicht transientes Speichermedium beinhaltet, das Inhalt bereitstellt, der Befehle darstellt, die ausführbar sind. Aus dem Inhalt kann resultieren, dass ein Computer verschiedene hierin beschriebene Funktionen/Operationen durchführt.
  • Wie hierin verwendet, kann eine Liste von Elementen, die durch die Formulierung „mindestens ein“ zusammengefügt sind, eine beliebige Kombination aus den aufgelisteten Begriffen meinen. Die Formulierung „mindestens eines von A, B oder C“ kann zum Beispiel Folgendes meinen: A; B; C; A und B; A und C; B und C; oder A, B und C.
  • Die obige Beschreibung veranschaulichter Ausführungsformen der Erfindung, einschließlich der Beschreibung in der Zusammenfassung, erhebt keinen Anspruch auf Vollständigkeit oder soll die Erfindung nicht genau auf die Formen einschränken, die offenbart werden. Wenngleich hierin zu Veranschaulichungszwecken spezielle Ausführungsformen der Erfindung und Beispiele für sie beschrieben werden, sind verschiedene äquivalente Abwandlungen im Schutzbereich der Erfindung möglich, wie der Fachmann auf dem einschlägigen Gebiet erkennt.
  • Diese Abwandlungen können unter Berücksichtigung der obigen ausführlichen Beschreibung an der Erfindung vorgenommen werden. Die in den folgenden Ansprüchen verwendeten Begriffe sind nicht derart auszulegen, dass sie die Erfindung auf die speziellen Ausführungsformen einschränken, die in der Patentbeschreibung und den Zeichnungen offenbart werden. Vielmehr ist der Schutzbereich der Erfindung vollständig durch die folgenden Ansprüche zu bestimmen, die gemäß anerkannten Regelungen zur Anspruchsinterpretation auszulegen sind.

Claims (25)

  1. Verfahren zum Durchführen von Remote-Memory-Access(RMA)-Datenübertragungen zwischen einem entfernten Knoten und einem lokalen Knoten, wobei das Verfahren Folgendes umfasst: Durchführen eines RMA-Schreibvorgangs, bei dem Daten aus dem lokalen Knoten in den entfernten Knoten geschrieben werden, durch Lesen von zu schreibenden Daten aus einem Quellpuffer auf dem lokalen Knoten; Senden einer ersten Active-Message(AM)-Schreibanforderung vom lokalen Knoten an einen AM-Handler auf dem entfernten Knoten, wobei die erste AM-Schreibanforderung zu schreibende Daten und eine Anfangsadresse in einem Adressraum eines entfernten Speichers auf dem entfernten Knoten, wohin die Daten zu schreiben sind, enthält; und Behandeln der ersten AM-Schreibanforderung mit dem AM-Handler auf dem entfernten Knoten durch Extrahieren der Daten aus der ersten AM-Schreibanforderung und Schreiben der Daten in einen Adressbereich im Adressraum eines entfernten Speichers beginnend bei der Anfangsadresse.
  2. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: Senden einer AM-Schreibantwort vom entfernten an den lokalen Knoten, wobei die AM-Schreibantwort angibt, dass die Daten erfolgreich in den Adressraum eines entfernten Speichers geschrieben wurden; und Einsetzen eines AM-Handlers auf dem lokalen Knoten, um die AM-Schreibantwortnachricht zu verarbeiten.
  3. Verfahren nach Anspruch 1 oder 2, das ferner Folgendes umfasst: Partitionieren der zu schreibenden Daten in eine Vielzahl von Paketen; für jedes der Vielzahl von Paketen Lesen von diesem Paket entsprechenden Paketdaten aus dem Quellpuffer auf dem lokalen Knoten; Senden einer jeweiligen AM-Anforderung vom lokalen Knoten an den AM-Handler auf dem entfernten Knoten, die die Paketdaten und eine Anfangsadresse in einem Adressraum eines entfernten Speichers auf dem entfernten Knoten, wohin die Paketdaten zu schreiben sind, enthält; und Behandeln der jeweiligen AM-Anforderung mit dem AM-Handler auf dem entfernten Knoten durch Extrahieren der Paketdaten aus der jeweiligen AM-Anforderung und Schreiben der Daten in einen Adressbereich im Adressraum eines entfernten Speichers beginnend bei der Anfangsadresse, wobei die erste AM-Schreibanforderung einer AM-Schreibanforderung entspricht, die zum Übertragen eines ersten Pakets von Daten von der Vielzahl von Paketen verwendet wird.
  4. Verfahren nach Anspruch 3, das ferner Folgendes umfasst: Detektieren, dass alle Paketdaten erfolgreich in den Adressraum eines entfernten Speichers geschrieben wurden; Senden einer AM-Antwort vom entfernten an den lokalen Knoten, die angibt, dass die Paketdaten erfolgreich in den Adressraum eines entfernten Speichers geschrieben wurden; und Einsetzen eines AM-Handlers auf dem lokalen Knoten, um die AM-Antwortnachricht zu verarbeiten.
  5. Verfahren nach einem der vorhergehenden Ansprüche, das ferner Folgendes umfasst: Durchführen eines RMA-Lesevorgangs, bei dem Daten aus dem entfernten Knoten gelesen und an den lokalen Knoten übertragen werden, durch Senden einer AM-Leseanforderung an den AM-Handler auf dem entfernten Knoten, wobei die AM-Leseanforderung einen Adressbereich im entfernten Adressraum mit zu lesenden Daten identifiziert; in Ansprechen auf das Empfangen der AM-Leseanforderungsnachricht Abrufen der zu lesenden Daten aus dem entfernten Adressraum über den AM-Handler auf dem entfernten Knoten und Senden der abgerufenen Daten an den lokalen Knoten über eine AM-Leseantwortnachricht; und Behandeln der AM-Leseantwort mit einem AM-Handler auf dem lokalen Knoten durch Extrahieren der Daten aus der AM-Leseantwort und Schreiben der Daten in einen Zielpuffer auf dem lokalen Knoten.
  6. Verfahren nach einem der vorhergehenden Ansprüche, das ferner Folgendes umfasst: Durchführen eines RMA-Lesevorgangs, bei dem Daten aus dem entfernten Knoten gelesen und an den lokalen Knoten übertragen werden, wofür eine Vielzahl von Paketen verwendet wird, wobei Daten für jedes der Vielzahl von Paketen übertragen werden, durch Senden einer jeweiligen AM-Leseanforderung an den AM-Handler auf dem entfernten Knoten, wobei die AM-Leseanforderung einen Adressbereich im entfernten Adressraum mit zu lesenden Paketdaten identifiziert; in Ansprechen auf das Empfangen der AM-Leseanforderungsnachricht Abrufen der zu lesenden Paketdaten aus dem entfernten Adressraum über den AM-Handler auf dem entfernten Knoten und Senden der abgerufenen Paketdaten an den lokalen Knoten über eine AM-Leseantwortnachricht; und Behandeln der AM-Leseantwort mit einem AM-Handler auf dem lokalen Knoten durch Extrahieren der Paketdaten aus der AM-Leseantwort und Schreiben der Paketdaten in einen Zielpuffer auf dem lokalen Knoten.
  7. Verfahren nach einem der vorhergehenden Ansprüche, das ferner Folgendes umfasst: Einsetzen einer getaggten Nachricht für die erste AM-Schreibanforderung unter Verwendung eines Schemas für die Übermittlung getaggter Nachrichten; und Einsetzen des AM-Handlers auf dem entfernten Knoten, um die getaggte Nachricht zu prüfen, um zu verifizieren, dass der entfernte Knoten der vorgesehene Empfänger der ersten AM-Schreibanforderung ist.
  8. Verfahren nach einem der vorhergehenden Ansprüche, das ferner Folgendes umfasst: Registrieren mindestens eines Adressbereichs im Adressraum eines entfernten Speichers auf dem entfernten Knoten, in den Daten geschrieben werden können, wofür eine oder mehrere vom entfernten Knoten gesendete AM-Schreibanforderungen verwendet werden, am lokalen Knoten; Veröffentlichen eines Zugriffsschlüssels für den entfernten Knoten entsprechend mindestens einem beim lokalen Knoten registrierten Adressbereich; Aufnehmen des Zugriffsschlüssels in die erste AM-Schreibanforderung; und Prüfen des Zugriffsschlüssels über den AM-Handler auf dem entfernten Knoten, um zu validieren, ob die erste AM-Schreibanforderung zulässig ist.
  9. Nichtflüchtiges maschinenlesbares Medium, auf dem ein erster und ein zweiter Satz von Befehlen gespeichert sind, die dafür konfiguriert sind, um jeweils auf einem lokalen und einem entfernten Knoten ausgeführt zu werden, um das Verfahren nach einem der vorhergehenden Ansprüche zu implementieren.
  10. Verfahren zum Durchführen von Remote-Memory-Access(RMA)-Datenübertragungen zwischen einem entfernten Knoten und einem lokalen Knoten, wobei das Verfahren Folgendes umfasst: Durchführen eines RMA-Schreibvorgangs, bei dem Daten aus dem lokalen Knoten in den entfernten Knoten geschrieben werden, durch Senden einer ersten Active-Message(AM)-Schreibanforderung vom lokalen Knoten an einen AM-Handler auf dem entfernten Knoten, wobei die erste AM-Schreibanforderung einen Adressbereich in einem Adressraum eines entfernten Speichers auf dem entfernten Knoten identifiziert, wohin die Daten zu schreiben sind; Lesen von zu schreibenden Daten aus einem Quellpuffer auf dem lokalen Knoten und Senden der Daten an den entfernten Knoten; Verarbeiten der Daten, die durch den entfernten Knoten empfangen werden, um zu bewirken, dass die in den Adressraum eines entfernten Speichers zu schreibenden Daten den in der ersten AM-Schreibanforderung identifizierten Adressbereich belegen.
  11. Verfahren nach Anspruch 10, das ferner Folgendes umfasst: Empfangen einer Vielzahl von AM-Schreibanforderungen, wobei jede AM-Schreibanforderung einen Adressbereich im Adressraum eines entfernten Speichers auf dem entfernten Knoten identifiziert, wohin ein Block von mit dieser AM-Schreibanforderung assoziierten Daten, die anschließend zu senden sind, zu schreiben ist, wobei jede AM-Schreibanforderung Indikatoren beinhaltet, die den Block assoziierter Daten identifizieren; Einreihen jeder AM-Schreibanforderung in eine RMA-Schreibwarteschlange auf dem entfernten Knoten über den AM-Handler auf dem entfernten Knoten; Empfangen einer Vielzahl von Blöcken von Daten vom lokalen Knoten, wobei jeder Block von Daten mit einer zuvor empfangenen AM-Schreibanforderung assoziiert ist und Indikatoren enthält, aus denen die zuvor empfangene AM-Schreibanforderung identifiziert werden kann; Entfernen der AM-Schreibanforderungen aus der RMA-Schreibwarteschlange; und Verarbeiten jeder aus der Warteschlange entfernten AM-Schreibanforderung, um zu bestimmen, wohin der empfangene Block von Daten, der mit dieser AM-Schreibanforderung assoziiert ist, im Adressraum eines entfernten Speichers zu schreiben ist.
  12. Verfahren nach Anspruch 10 oder 11, das ferner Durchführen eines RMA-Lesevorgangs umfasst, bei dem Daten aus dem entfernten Knoten gelesen und an den lokalen Knoten übertragen werden, durch Senden einer AM-Leseanforderung an den AM-Handler auf dem entfernten Knoten, wobei die AM-Leseanforderung einen Adressbereich im entfernten Adressraum mit zu lesenden Daten identifiziert; in Ansprechen auf das Empfangen der AM-Leseanforderungsnachricht Generieren einer RMA-Leseanforderung, die der AM-Leseanforderung entspricht, die den Adressbereich im entfernten Adressraum mit zu lesenden Daten identifiziert, über den AM-Handler auf dem entfernten Knoten; Verarbeiten der RMA-Leseanforderung auf dem entfernten Knoten, woraus resultiert, dass die Daten, die aus dem entfernten Adressraum, wie durch den Adressbereich in der RMA-Leseanforderung definiert, zu lesen sind, aus dem entfernten Adressraum abgerufen und an den lokalen Knoten gesendet werden; und Schreiben der abgerufenen Daten, die vom entfernten Knoten gesendet werden, in einen Zielpuffer auf dem lokalen Knoten.
  13. Verfahren nach Anspruch 12, das ferner Folgendes umfasst: in Ansprechen auf das Empfangen der AM-Leseanforderungsnachricht Generieren und Einreihen einer RMA-Leseanforderung, die der AM-Leseanforderung entspricht, in eine RMA-Leseanforderungswarteschlange auf dem entfernten Knoten, die den Adressbereich im entfernten Adressraum mit zu lesenden Daten identifiziert, über den AM-Handler auf dem entfernten Knoten; Entfernen der RMA-Leseanforderung aus der RMA-Leseanforderungswarteschlange; und Abrufen der zu lesenden Daten aus dem entfernten Adressraum, wie durch den Adressbereich in der RMA-Leseanforderung definiert, und Senden der abgerufenen Daten an den lokalen Knoten.
  14. Verfahren nach Anspruch 13, wobei die Warteschlangenentfernungs-, Datenabruf- und Sendeoperationen durch eine RMA-Lesefunktion auf dem entfernten Knoten, der vom AM-Handler auf dem entfernten Knoten separat ist, durchgeführt werden.
  15. Nichtflüchtiges maschinenlesbares Medium, auf dem ein erster und ein zweiter Satz von Befehlen gespeichert sind, die dafür konfiguriert sind, um jeweils auf einem lokalen und einem entfernten Knoten ausgeführt zu werden, um das Verfahren nach einem der Ansprüche 10–14 zu implementieren.
  16. Vorrichtung, die Folgendes umfasst: eine Netzschnittstelle; einen Speicher, der einen Adressraum eines lokalen Speichers beinhaltet; einen Schreibanforderungs-Active-Message(AM)-Handler, der dafür konfiguriert ist, um über die Netzschnittstelle eine erste AM-Schreibanforderung zu empfangen, die von einer entfernten Vorrichtung über eine an die Netzschnittstelle gekoppelte Kommunikationsstrecke gesendet wird, wobei die erste AM-Schreibanforderung, die einem Remote-Memory-Access(RMA)-Schreibvorgang entspricht, durch die entfernte Vorrichtung ausgegeben wird und erste Daten enthält, die an einer Anfangsadresse im Adressraum eines lokalen Speichers im Speicher zu schreiben sind, wohin die Daten zu schreiben sind; die erste AM-Schreibanforderung durch Extrahieren der Daten aus der ersten AM-Schreibanforderung und Schreiben der Daten in einen Adressbereich im Adressraum eines entfernten Speichers beginnend bei der Anfangsadresse zu behandeln; und eine AM-Schreibantwort an die entfernte Vorrichtung zu senden, die angibt, dass die Daten erfolgreich in den Adressraum eines entfernten Speichers geschrieben wurden.
  17. Vorrichtung nach Anspruch 16, die ferner Folgendes umfasst: ein RMA-Schreibmodul, das dafür konfiguriert ist, um eine AM-Schreiboperation durchzuführen, bei der eine zweite AM-Schreibanforderung, die einem RMA-Vorgang zum Schreiben in einen Adressraum eines entfernten Speichers im Speicher auf der entfernten Vorrichtung entspricht, generiert und an die entfernte Vorrichtung gesendet wird, wobei die zweite AM-Schreibanforderung zweite Daten enthält, die an einer Anfangsadresse im Adressraum eines entfernten Speichers zu schreiben sind, wohin die Daten zu schreiben sind; und einen Schreibantwort-AM-Handler, der dafür konfiguriert ist, um eine AM-Schreibantwort zu verarbeiten, die von der entfernten Vorrichtung gesendet wird, nachdem die zweiten Daten erfolgreich in den Adressraum eines entfernten Speichers geschrieben worden sind.
  18. Vorrichtung nach Anspruch 17, die ferner einen Quellpuffer umfasst, und wobei das RMA-Schreibmodul ferner dafür konfiguriert ist, um: in den Adressraum eines entfernten Speichers zu schreibende dritte Daten in eine Vielzahl von Paketen zu partitionieren; für jedes der Vielzahl von Paketen diesem Paket entsprechende Paketdaten aus dem Quellpuffer zu lesen; und eine jeweilige AM-Schreibanforderung an einen Schreibanforderungs-AM-Handler auf der entfernten Vorrichtung zu senden, die die Paketdaten und eine jeweilige Anfangsadresse im Adressraum eines entfernten Speichers auf der entfernten Vorrichtung enthält, wohin die Paketdaten zu schreiben sind.
  19. Vorrichtung nach einem der Ansprüche 16–18, wobei der Schreibanforderungs-AM-Handler ferner dafür konfiguriert ist, um: eine Vielzahl von AM-Schreibanforderungen von der entfernten Vorrichtung zu empfangen, wobei jede der Vielzahl von AM-Schreibanforderungen jeweilige Paketdaten enthält, die einem entfernten Vorgang zum Schreiben dritter Daten entsprechen, die in eine Vielzahl von Paketen partitioniert sind und an einer jeweiligen Anfangsadresse im Adressraum eines lokalen Speichers in den Adressraum eines lokalen Speichers zu schreiben sind; die Paketdaten für jede der Vielzahl von AM-Schreibanforderungen zu extrahieren und die Paketdaten beginnend bei der durch diese AM-Schreibanforderung identifizierten Anfangsadresse in den Adressraum eines lokalen Speichers zu schreiben; zu detektieren, dass eine Gesamtheit der dritten Daten in den Adressraum eines lokalen Speichers geschrieben wurde; und eine AM-Schreibantwort an die entfernte Vorrichtung zu senden, die angibt, dass die dritten Daten erfolgreich in den Adressraum eines lokalen Speichers geschrieben wurden.
  20. Vorrichtung nach einem der Ansprüche 16–19, die ferner Folgendes umfasst: einen Zielpuffer im lokalen Speicher; einen Leseantwort-AM-Handler; und ein RMA-Lesemodul, das dafür konfiguriert ist, um eine AM-Leseanforderung zu generieren und an einen Leseanforderungs-AM-Handler auf der entfernten Vorrichtung zu senden, wobei die AM-Leseanforderung einen Adressbereich im entfernten Adressraum mit zu lesenden Daten der entfernten Vorrichtung identifiziert; in Ansprechen auf die AM-Leseanforderung eine AM-Leseantwort, die die aus dem entfernten Adressraum gelesenen Daten enthält, von der entfernten Vorrichtung zu empfangen; und die AM-Leseantwort mit dem Leseantwort-AM-Handler durch Extrahieren der Daten aus der AM-Leseantwort und Schreiben der Daten in den Zielpuffer zu behandeln.
  21. Vorrichtung nach einem der Ansprüche 16–20, wobei das RMA-Lesemodul ferner dafür konfiguriert ist, um einen RMA-Lesevorgang durchzuführen, bei dem Daten aus der entfernten Vorrichtung gelesen und übertragen werden, wofür eine Vielzahl von Paketen verwendet wird, wobei Daten für jedes der Vielzahl von Paketen entfernt gelesen werden, durch Senden einer jeweiligen AM-Leseanforderung an den AM-Leseanforderungshandler auf der entfernten Vorrichtung, wobei die AM-Leseanforderung einen Adressbereich im entfernten Adressraum mit zu lesenden Paketdaten identifiziert; in Ansprechen auf jede jeweilige AM-Leseanforderung Empfangen einer AM-Leseantwort, die die aus dem entfernten Adressraum gelesenen Paketdaten enthält, von der entfernten Vorrichtung; und Behandeln der AM-Leseantwort mit dem Leseantwort-AM-Handler durch Extrahieren der Paketdaten aus der AM-Leseantwort und Schreiben der Paketdaten in den Zielpuffer.
  22. Vorrichtung nach einem der Ansprüche 16–21, die ferner Folgendes umfasst: einen Leseanforderungs-AM-Handler, der dafür konfiguriert ist, um eine AM-Leseanforderung von der entfernten Vorrichtung zu empfangen, die einen Adressbereich im lokalen Adressraum mit Daten, der zu lesende Daten enthält, identifiziert; die Daten aus dem in der AM-Leseanforderung identifizierten Adressbereich abzurufen; und eine AM-Antwort an die entfernte Vorrichtung zu senden, die die Daten enthält, die abgerufen werden.
  23. Vorrichtung, die Folgendes umfasst: eine Netzschnittstelle; einen Speicher, der einen Adressraum eines lokalen Speichers beinhaltet; einen Schreibanforderungs-Active-Message(AM)-Handler, der dafür konfiguriert ist, um über die Netzschnittstelle eine Vielzahl von AM-Schreibanforderungen zu empfangen, die von einer entfernten Vorrichtung über eine an die Netzschnittstelle gekoppelte Kommunikationsstrecke gesendet werden, wobei jede AM-Schreibanforderung, die einem Remote-Memory-Access(RMA)-Schreibvorgang entspricht, durch die entfernte Vorrichtung ausgegeben wird und jeweilige Daten, die in den Adressraum eines lokalen Speichers zu schreiben sind, und eine Anfangsadresse, wohin ein Anfang der jeweiligen Daten zu schreiben ist, enthält; und eine RMA-Schreibanforderung zu generieren und die RMA-Schreibanforderung in eine RMA-Schreibwarteschlange einzureihen; und ein RMA-Fortschrittmodul, das dafür konfiguriert ist, um: eine Vielzahl von Blöcken von Daten von der entfernten Vorrichtung zu empfangen, wobei jeder Block von Daten mit einer zuvor empfangenen AM-Schreibanforderung assoziiert ist und Indikatoren enthält, aus denen eine entsprechende RMA-Schreibanforderung identifiziert werden kann; die RMA-Schreibanforderungen aus der RMA-Schreibwarteschlange zu entfernen; und jede aus der Warteschlange entfernte RMA-Schreibanforderung zu verarbeiten, um zu bestimmen, wohin der empfangene Block von Daten, der mit dieser RMA-Schreibanforderung assoziiert ist, im Adressraum eines lokalen Speichers zu schreiben ist.
  24. Vorrichtung nach Anspruch 23, die ferner Folgendes umfasst: einen Quellpuffer im Speicher; und ein RMA-Schreibmodul, das dafür konfiguriert ist, um eine AM-Schreibanforderung an die entfernte Vorrichtung zu senden, wobei die AM-Schreibanforderung einen Adressbereich in einem Adressraum eines entfernten Speichers im Speicher auf der entfernten Vorrichtung, in den die Daten zu schreiben sind, identifiziert; die zu schreibenden Daten aus dem Quellpuffer zu lesen; und die Daten an die entfernte Vorrichtung zu senden, wobei die Daten im Anschluss an das Senden der AM-Schreibanforderung gesendet werden und die Daten zusammen mit Indikatoren gesendet werden, die dafür konfiguriert sind, um zum Abgleichen der Daten, die gesendet werden, mit der AM-Schreibanforderung verwendet zu werden.
  25. Vorrichtung nach Anspruch 23 oder 24, die ferner Folgendes umfasst: eine RMA-Leseanforderungswarteschlange; einen Leseanforderungs-AM-Handler, der dafür konfiguriert ist, um eine AM-Leseanforderung von der entfernten Vorrichtung zu empfangen, die einen Adressbereich im lokalen Adressraum mit zu lesenden Daten identifiziert; in Ansprechen auf das Empfangen der AM-Leseanforderungsnachricht eine entsprechende RMA-Leseanforderung zu generieren, die den Adressbereich im lokalen Adressraum mit zu lesenden Daten identifiziert; und die RMA-Leseanforderung in die RMA-Leseanforderungswarteschlange einzureihen; und ein RMA-Fortschrittmodul, das dafür konfiguriert ist, um die RMA-Leseanforderung aus der RMA-Leseanforderungswarteschlange zu entfernen; Daten aus dem lokalen Adressraum, wie durch den Adressbereich in der RMA-Leseanforderung definiert, zu lesen; und die Daten, die gelesen werden, an die entfernte Vorrichtung zu senden.
DE102015112634.6A 2014-09-02 2015-07-31 Unterstützen von RMA-API über aktive Message Pending DE102015112634A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/475,337 2014-09-02
US14/475,337 US9632973B2 (en) 2014-09-02 2014-09-02 Supporting RMA API over active message

Publications (1)

Publication Number Publication Date
DE102015112634A1 true DE102015112634A1 (de) 2016-03-03

Family

ID=54062991

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015112634.6A Pending DE102015112634A1 (de) 2014-09-02 2015-07-31 Unterstützen von RMA-API über aktive Message

Country Status (8)

Country Link
US (1) US9632973B2 (de)
JP (1) JP6189898B2 (de)
KR (1) KR101752964B1 (de)
CN (1) CN105389120B (de)
DE (1) DE102015112634A1 (de)
FR (1) FR3025331A1 (de)
GB (1) GB2531864B (de)
TW (1) TWI582609B (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9448901B1 (en) * 2015-12-15 2016-09-20 International Business Machines Corporation Remote direct memory access for high availability nodes using a coherent accelerator processor interface
JP6725662B2 (ja) * 2016-07-28 2020-07-22 株式会社日立製作所 計算機システムおよび処理方法
US20180089044A1 (en) * 2016-09-27 2018-03-29 Francesc Guim Bernat Technologies for providing network interface support for remote memory and storage failover protection
US11763351B2 (en) * 2017-03-29 2023-09-19 Oklahoma Blood Institute Fundraising platform
CN110704343B (zh) * 2019-09-10 2021-01-05 无锡江南计算技术研究所 面向众核处理器访存和片内通信的数据传输方法与装置
TWI761846B (zh) * 2020-06-01 2022-04-21 鴻海精密工業股份有限公司 自動資料傳輸方法、裝置及存儲介質
WO2023044861A1 (en) * 2021-09-26 2023-03-30 Intel Corporation Concept for providing access to remote memory

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5448698A (en) 1993-04-05 1995-09-05 Hewlett-Packard Company Inter-processor communication system in which messages are stored at locations specified by the sender
JPH08180001A (ja) * 1994-04-12 1996-07-12 Mitsubishi Electric Corp 通信方式及び通信方法及びネットワークインタフェース
JP2736237B2 (ja) 1995-03-06 1998-04-02 技術研究組合新情報処理開発機構 遠隔メモリアクセス制御装置
US6240444B1 (en) * 1996-09-27 2001-05-29 International Business Machines Corporation Internet web page sharing
US20050080869A1 (en) * 2003-10-14 2005-04-14 International Business Machines Corporation Transferring message packets from a first node to a plurality of nodes in broadcast fashion via direct memory to memory transfer
US7536468B2 (en) * 2004-06-24 2009-05-19 International Business Machines Corporation Interface method, system, and program product for facilitating layering of a data communications protocol over an active message layer protocol
US7636813B2 (en) 2006-05-22 2009-12-22 International Business Machines Corporation Systems and methods for providing remote pre-fetch buffers
US7694310B2 (en) 2006-08-29 2010-04-06 International Business Machines Corporation Method for implementing MPI-2 one sided communication
US7979645B2 (en) 2007-09-14 2011-07-12 Ricoh Company, Limited Multiprocessor system for memory mapping of processing nodes
US7925842B2 (en) 2007-12-18 2011-04-12 International Business Machines Corporation Allocating a global shared memory
US8452888B2 (en) 2010-07-22 2013-05-28 International Business Machines Corporation Flow control for reliable message passing
CN102306115B (zh) * 2011-05-20 2014-01-08 华为数字技术(成都)有限公司 异步远程复制方法、系统及设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ROMANOW, Allyn; BAILEY, Stephen: An Overview of RDMA over IP. In: Proceedings of the First International Workshop on Protocols for Fast Long-Distance Networks (PFLDnet 2003). 2003. URL: http://lampreynetworks.com/assets/documents/RDMA_over_IP.pdf, Archiviert in www.archive.org am 18.10.2011 [abgerufen am 20.1.2016] *

Also Published As

Publication number Publication date
GB2531864B (en) 2019-04-24
CN105389120A (zh) 2016-03-09
US9632973B2 (en) 2017-04-25
TW201621699A (zh) 2016-06-16
GB2531864A (en) 2016-05-04
JP2016053946A (ja) 2016-04-14
US20160062944A1 (en) 2016-03-03
JP6189898B2 (ja) 2017-08-30
TWI582609B (zh) 2017-05-11
KR101752964B1 (ko) 2017-07-03
KR20160027902A (ko) 2016-03-10
CN105389120B (zh) 2018-09-21
GB201513562D0 (en) 2015-09-16
FR3025331A1 (de) 2016-03-04

Similar Documents

Publication Publication Date Title
DE102015112634A1 (de) Unterstützen von RMA-API über aktive Message
DE112020002495T5 (de) System und verfahren zur erleichterung der betriebsverwaltung in einer netzwerkschnittstellensteuerung (nic) für beschleuniger
DE102012209016B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE60027404T2 (de) Kreditbasiertes flusskontrollverfahren
DE102008030587B4 (de) Verfahren und Vorrichtung zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem
DE102012209011B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE102012209009B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE102018212253A1 (de) Drosselung für bandbreitenunausgewogene datenübertragungen
DE112017003279T5 (de) Grafikverarbeitungseinheit (gpu) für pakettransfer
DE202010018100U1 (de) Vorrichtung für ID-basierte Ströme über PCI-Express
DE112011106016T5 (de) Gemeinsame Sendeschlange
DE112013006417B4 (de) Verlustfreie Schalterstruktur mit niedriger Latenzzeit zum Gebrauch in einem Rechenzentrum
DE112011102415T5 (de) Registerzugriff in einer verteilten virtuellen Brückenumgebung
DE102016116721A1 (de) Reduzieren der Ethernet-Latenz in einem Multi-Server Chassis
DE102015102692A1 (de) Verfahren zum Optimieren von Netzdatenströmen in einem eingeschränkten System
DE112005001364T5 (de) Verarbeiten von Empfangsprotokolldateneinheiten
DE112012006227T5 (de) Remotezugriff auf den direkten Speicher mit reduzierter Latenzzeit
DE112017004907T5 (de) System, Vorrichtung und Verfahren zur Durchführung einer verteilten Arbitration
DE112013000812T5 (de) Variable Bestätigungsrate zum Verringern von Buskonflikt in Gegenwart von Datenübertragungsfehlern
DE102013107718A1 (de) Verfahren und Vorrichtungen zum Verfolgen von Verbindungselementen
DE112004002544T5 (de) Verfahren, System und Programm zur Identifizierung von Datenüberlauf
DE102012209014B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
EP3284193A1 (de) Ubertragungsverfahren und vorrichtungen zur übertragung
DE102016206109A1 (de) Speicherdirektzugriffssteuereinrichtung für mindestens eine einen Arbeitsspeicher aufweisende Recheneinheit
DE102019105065A1 (de) Technologien zur gezielten flusssteuerungswiederherstellung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication