DE102015102692A1 - Verfahren zum Optimieren von Netzdatenströmen in einem eingeschränkten System - Google Patents

Verfahren zum Optimieren von Netzdatenströmen in einem eingeschränkten System Download PDF

Info

Publication number
DE102015102692A1
DE102015102692A1 DE102015102692.9A DE102015102692A DE102015102692A1 DE 102015102692 A1 DE102015102692 A1 DE 102015102692A1 DE 102015102692 A DE102015102692 A DE 102015102692A DE 102015102692 A1 DE102015102692 A1 DE 102015102692A1
Authority
DE
Germany
Prior art keywords
pcie
data
hca
socket
interconnect
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
DE102015102692.9A
Other languages
English (en)
Inventor
William R. Magro
Jerrie L. Coffman
Arlin R. Davis
Robert J. Woodruff
Jianxin Xiong
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 DE102015102692A1 publication Critical patent/DE102015102692A1/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/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4265Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
    • G06F13/4278Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus using an embedded synchronisation
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multi Processors (AREA)

Abstract

Verfahren, Vorrichtung und Software zum Optimieren von Netzdatenströmen in eingeschränkten Systemen. Die Verfahren ermöglichen das Übertragen von Daten zwischen PCIe-Karten auf Serverplattformen mit mehreren Sockeln, wobei jede Plattform einen lokalen Sockel mit einem InfiniBand(IB)-HCA und einen entfernten Sockel aufweist. Daten, die nach außerhalb der Plattform gesendet werden sollen, werden von einer PCIe-Karte über Proxy-Datenpfade an den IB-HCA der Plattform übertragen. Daten, die an einer Plattform empfangen werden, können eine direkte PCIe-P2P(Peer-to-Peer)-Übertragung nutzen, falls die Ziel-PCIe-Karte auf dem lokalen Sockel installiert ist, oder über einen Proxy-Datenpfad, falls die Ziel-PCIe-Karte auf einem entfernten Sockel installiert ist. Gehende Übertragungen von einer PCIe-Karte auf einem lokalen Sockel an den IB-HCA der Plattform können selektiv übertragen werden, indem entweder ein Proxy-Datenpfad für umfangreichere Datenübertragungen oder ein direkter P2P-Datenpfad für kleinere Datenübertragungen verwendet wird. Die Software ist dafür ausgelegt, jede Datenübertragung lokal-zu-lokal, lokal-zu-entfernt, entfernt-zu-lokal und entfernt-zu-entfernt in einer Weise zu unterstützen, die für die Softwareanwendungen, welche die Daten erzeugen und empfangen, transparent ist.

Description

  • Hintergrund der Erfindung
  • In den vergangenen Jahren haben Implementierungen von Datenwolkendiensten, sog. „cloud-basierte” Dienste, Hochleistungsrechnen (High-Performance Computing, HPC) und andere Aktivitäten unter Einbindung von Rechenzentren und dergleichen weite Verbreitung gefunden. Unter einer typischen Rechenzentrumsinstallation stehen eine große Zahl von in Serverchassis und Serverschränken installierten Servern über Netzverbindungen (z. B. Ethernet oder InfiniBand) und verschiedene Schaltungsmechanismen, etwa Switch-Blades/-Module und „Top-of-Rack”-Switches (ToR, oben auf den Serverschränken angebrachte Vernetzungselemente) in Kommunikationsverbindung.
  • Unter Gesichtspunkten des HPC wird eine sehr große Zahl von Rechenknoten implementiert, um verschiedene Aufgaben parallel oder im Wesentlichen parallel zu lösen. Im Wesentlichen führt jeder Rechenknoten einen Teil einer umfangreicheren, komplexeren Aufgabe aus. Um dieses Schema implementieren zu können, müssen Rechenknoten Eingangsdaten und Ausgangsdaten untereinander austauschen. Diese Daten werden mittels einer oder mehrerer Zwischenverbindung(en), sog. „Interconnects”, übertragen.
  • Verschiedene Arten von Interconnects werden verwendet, um die Rechenknoten in einer Interconnect-Hierarchie zusammenzuschalten. Beispielsweise stehen an der Spitze der Hierarchie Interconnects zwischen Rechenkernen innerhalb desselben Prozessors. Die nächste Stufe bilden Interconnects zwischen Prozessoren auf derselben Plattform, etwa einem Server-Blade oder -Modul. Als Nächstes folgen Interconnects zwischen Plattformen, etwa eine Rückwandplatine („Backplane”) in einem Blade-Server. Hierauf folgen Interconnects zwischen Serverchassis und/oder ToR-Switches, Interconnects zwischen Serverschränken und schließlich Interconnects zwischen Rechenzentren. Im Allgemeinen reduziert sich die Kommunikationsbandbreite zwischen Knoten, je weiter man in der Hierarchie nach unten steigt.
  • Neben den Latenzen, die Übertragungen über die Interconnect-Verbindungen selbst entsprechen (die abhängig ist von der Bandbreite der Verbindung, ihrer Länge und der Schaltgeschwindigkeit), ergeben sich erhebliche Latenzen auch aus Operationen, die an den Schnittstellen zu den Interconnects ausgeführt werden, und/oder aus der weiteren Verarbeitung, die erforderlich ist, um Daten für die Übertragung über verschiedene Interconnect-Verbindungen in der Interconnect-Hierarchie aufzubereiten. Zusammengefasst verringern diese Latenzen bei der Datenübertragung die Übertragungsleistung der HPC-Implementierung insgesamt und können einen erheblichen Anteil an der Gesamtlatenz (Verarbeitung und Datenübertragung) für die Rechenknoten ausmachen.
  • Ein weiterer wichtiger Aspekt der HPC ist die Softwarearchitektur. Eine Software unter Verwendung von zehntausenden Rechenknoten in paralleler Weise zu implementieren, erfordert eine wesentlich andere Softwarearchitektur, als sie für herkömmliche Anwendungen eingesetzt wird. Daneben sind spezifische Softwaremodule entwickelt worden, um entsprechende Arten von Interconnects nutzen zu können, etwa Softwaremodule, die für die Kommunikation über InfiniBand verwendet werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorstehenden Aspekte und viele der mit der vorliegenden Erfindung einhergehenden Vorteile werden leichter erkennbar, wenn dieselbe besser verstanden wird, indem die nachstehende ausführliche Beschreibung im Zusammenhang mit den beigefügten Zeichnungen gelesen wird, in denen sich gleiche Bezugszeichen auf gleiche Teile in den verschiedenen Ansichten beziehen, soweit nicht anders angegeben:
  • ist eine schematische Darstellung einer Serverplattform mit zwei Sockeln, die einen lokalen Sockel und einen entfernten Sockel umfassen;
  • ist eine schematische Darstellung eines Servers mit 2 Sockeln, der dafür ausgelegt ist, Datenübertragungen über Proxy-Datenpfade zu implementieren;
  • ist eine schematische Darstellung, die Softwarekomponenten veranschaulicht, welche in einem Host und MIC implementiert sind, um Proxy-Datenübertragungen zu implementieren, gemäß einer Ausführungsform der Erfindung;
  • ist eine Darstellung, die Komponenten und Warteschlangenpaare zum Implementieren einer Proxy-Datenübertragung veranschaulicht, gemäß einer Ausführungsform;
  • ist eine Darstellung, die die Interaktionen zwischen Komponenten auf der Quellseite einer Übertragung veranschaulicht, zum Implementieren einer Proxy-RDMA-Datenübertragung mit einer Mehrzahl von Datenfragmenten, gemäß einer Ausführungsform;
  • ist ein Flussdiagramm, dass Operationen veranschaulicht, die zum Implementieren der RDMA-Datenübertragung von ausgeführt werden.
  • und sind schematische Darstellungen, die eine Implementierung einer Datenübertragung lokal zu lokal (Local-to-Local, L2L) zwischen einem Paar Serverplattformen mit zwei Sockeln darstellen, gemäß einer Ausführungsform;
  • und sind schematische Darstellungen, die eine Implementierung einer Datenübertragung lokal zu entfernt (Local-to-Remote, L2R) zwischen einem Paar Serverplattformen mit zwei Sockeln darstellen, gemäß einer Ausführungsform;
  • und sind schematische Darstellungen, die eine Implementierung einer Datenübertragung entfernt zu entfernt (Remote-to-Remote, R2R) zwischen einem Paar Serverplattformen mit zwei Sockeln darstellen, gemäß einer Ausführungsform;
  • ist eine Tabelle, die Datenübertragungspfade für Datenübertragungen zwischen verschiedenen Endpunkten auf getrennten Plattformen veranschaulicht;
  • ist eine Darstellung, die eine Softwarearchitektur zum Implementieren von RDMA über SCIF und InfiniBand veranschaulicht, gemäß einer Ausführungsform; und
  • ist ein Flussdiagramm, das Operationen und Logik zum Implementieren von MPI-Dual-DAPL veranschaulicht, gemäß einer Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der vorliegenden Patentanmeldung werden Ausführungsformen und Vorrichtungen zum Optimieren von Netzdatenströmen in einem eingeschränkten System beschrieben. Die nachstehende Beschreibung enthält eine Reihe spezifischer Einzelheiten, um ein gründliches Verständnis der Ausführungsformen der Erfindung zu vermitteln. Ein Fachmann auf diesem Gebiet der Technik wird jedoch erkennen, dass die Erfindung auch ohne die oder mit mehreren der spezifischen Einzelheiten oder mit anderen Verfahren, Komponenten, Materialien etc. realisiert werden kann. In anderen Fällen werden ausreichend bekannte Strukturen, Materialien oder Operationen nicht in ihren Einzelheiten gezeigt oder beschrieben, um die Aspekte der Erfindung möglichst klar darzustellen.
  • Der Hinweis in der Patentschrift auf „eine einzige Ausführungsform” oder „eine Ausführungsform” bedeutet, dass ein(e) besondere(s) Merkmal, Struktur oder Eigenschaft, das/die im Zusammenhang mit der Ausführungsform beschrieben wird, in wenigstens einer Ausführungsform der Erfindung vorkommt. Der Ausdruck „bei einer Ausführungsform” oder „in einer Ausführungsform” an diversen Stellen in der Beschreibung bezieht sich somit nicht notwendigerweise immer auf dieselbe Ausführungsform. Ferner können die Merkmale, Strukturen, Funktionen oder Kennzeichen auf jede geeignete Weise in einer oder mehreren Ausführungsformen kombiniert werden.
  • Aus Gründen der Klarheit können einzelne Komponenten in den Abbildungen hier auch mit ihrer entsprechenden Beschriftung in den Abbildungen statt mit einer spezifischen Bezugsnummer bezeichnet werden. Darüber hinaus können Bezugsnummern, die einen bestimmten Komponententyp (im Gegensatz zu einer bestimmten Komponente) bezeichnen, mit einer Ergänzung „(typ)” dargestellt sein, die die Bedeutung „typisch” hat. Es versteht sich, dass die Konfiguration dieser Komponenten typisch ist für ähnliche Komponenten, die vorhanden sein können, jedoch aus Gründen der Einfachheit und Übersichtlichkeit in den Zeichnungen nicht dargestellt sind, oder ansonsten für Komponenten, die nicht mit eigenen Bezugsnummern gekennzeichnet sind. Im Gegensatz dazu ist „(typ)” nicht in der Bedeutung zu verstehen, dass die Komponente, das Element etc. typischerweise für die/den hier offenbarte(n) Funktion, Implementierung, Zweck etc. verwendet wird.
  • zeigt eine Serverplattform 100 mit einer Architektur, die ein Beispiel eines eingeschränkten Systems darstellt. Der Server umfasst zwei Intel® Xeon® Prozessoren (auch CPUs genannt) 102 und 104, die jeweils einem eigenen Sockel zugeordnet sind, dargestellt als entfernter Sockel 106 und lokaler Sockel 108. Jeder Sockel umfasst einen Satz Komponenten, die zusammenfassend als separates Serversubsystem der Serverplattform 100 betrieben werden. Für den entfernten Sockel 106 umfassen die dargestellten Komponenten einen Host-Speicher 110, einen Eingangs-/Ausgangs-Knotenpunkt (Input-Output Hub, IOH) 112, ein PCIe(Peripheral Component Interconnect Express, Peripheriegeräte-Expressverbindung)-Interconnect 114 und ein Paar PCIe-Karten 116 und 118. In ähnlicher Weise umfassen die für den lokalen Sockel 108 dargestellten Komponenten einen Host-Speicher 120, einen Eingangs-/Ausgangs-Knotenpunkt (IOH) 122, ein PCIe-Interconnect 124 und ein Paar PCIe-Karten 126 und 128. Wie weiter in gezeigt, sind Prozessoren 102 und 104 über eine QuickPath Interconnect®(QPI)-Verbindung 130 angeschlossen.
  • Es wird darauf hingewiesen, dass die in und anderen Abbildungen hier gezeigte Architektur beispielhaft ist und dass spezifische Komponenten lediglich stellvertretend für einen allgemeineren Komponententyp stehen, der für eine bestimmte Funktion, Funktionsgruppe oder Implementierung realisiert wird. Beispielsweise sind die Xeon®-Prozessoren und der IOH repräsentativ für ein generisches CPU- und E/A-Subsystem.
  • Eine PCIe-Interconnectstruktur umfasst eine Mehrzahl von Interconnects auf serieller Basis, die typischerweise als physische Mehrspurverbindungen implementiert sind; die Spurbreite ist mit PCIe nx angegeben, wobei n 1, 2, 4, 8, 16 oder 32 ist. PCIe ist eine Weiterentwicklung des älteren PCI-Standards, der als parallele Busstruktur implementiert wurde. In einigen Fällen kann die PCIe-Interconnectstruktur auf einer Plattform als PCIe-Bus bezeichnet werden, wobei darauf hingewiesen wird, dass die tatsächliche Interconnectstruktur selbst Punkt-zu-Punkt(-Mehrspur)-Verbindungen umfasst. Aus historischen Gründen ist die logische Hierarchie einer PCIe-Interconnectstruktur als busartige Struktur dargestellt, da verschiedene Aspekte des PCIe-Betriebs, etwa die PCIe-Gerätenummerierung, aus ähnlichen Operationen unter PCI ererbt sind.
  • Wie bei PCI steht an oberster Stelle einer PCIe-Interconnect-Hierarchie ein PCIe-Root-Komplex. Je nach Architektur kann/können ein oder mehrere PCIe-Root-Komplex(e) in einem IOH und/oder in einem Prozessor mit System-on-Chip(SoC)-Architektur enthalten sein. In der in dargestellten Konfiguration umfasst jeder der IOH 112 und 122 einen PCIe-Root-Komplex 132, der mit einer PCIe-Schnittstelle (I/F) 134 gekoppelt ist.
  • Der PCIe-Root-Komplex dient als Managementeinheit für alle an seine physische Interconnect-Struktur angeschlossenen Geräte sowie als Schnittstelle zwischen derartigen Geräten und einer Host-CPU. Die meisten modernen Rechner und Server weisen einen oder mehrere PCIe-Steckplatz/-Steckplätze auf, worin eine entsprechende PCIe-Karte installiert werden kann. Bei manchen Designs besitzt jeder PCI-Steckplatz dieselbe Anzahl von PCIe-Spuren, während in anderen Designs die Anzahl der PCIe-Spuren verschieden sein kann, etwa indem ein breiteres Interconnect für schnellere Peripheriegeräte wie etwa Grafikkarten und Netzadapter verwendet wird.
  • Beim Systemstart wird jeder PCIe-Root-Komplex einen Test durchführen, um festzustellen, welche Geräte in den zugehörigen PCIe-Steckplätzen vorhanden sind, und diese Geräte zu nummerieren. Im Allgemeinen kann eine PCIe-Interconnect-Hierarchie Verbindungen zu anderen Geräten außer PCIe-Karten unterstützen, etwa verschiedenen Chips und Schnittstellen, die auf eine Hauptplatine eines Servers oder eine andere, mit der Hauptplatine gekoppelte Platine montiert sind. Diese Geräte werden ebenfalls nummeriert. In sind die PCIe-Karten 116 und 118 als PCIe-Geräte 1 und 2 nummeriert, mit einem angehängten „r”, um anzuzeigen, dass dies die PCIe-Geräte 1 und 2 auf dem entfernten Sockel 106 sind. In ähnlicher Weise sind die PCIe-Karten 126 und 128 als Geräte 1 und 2 auf dem lokalen Sockel 108 nummeriert (und somit mit 11 und 21 bezeichnet).
  • Im Allgemeinen betreffen die meisten Kommunikationsvorgänge über ein PCIe-Interconnect Datenübertragungen zwischen einer CPU und einem PCI-Gerät, beispielsweise etwa einer PCIe-Karte oder einem Peripheriegerät. Beispielsweise sei angenommen, dass eine Anwendung Daten (z. B. einen Speicherblock) über ein Rechnernetz an eine andere Serverplattform senden will und dass die PCIe-Karte 128 eine Netzadapterkarte, etwa eine Ethernet-Karte ist. Typischerweise würde die Anwendung, die mit der anwendbaren Netzstapel-Software, welche auf dem Prozessor 104 läuft, in Verbindung steht, einen Strom aus Datenpaketen erzeugen, welcher die Dateidaten enthält und im Host-Speicher 120 zwischengespeichert wird, und die Datenpakete über PCIe-Schreibzugriffe an die PCIe-Karte 128 senden, die dann wiederum die Pakete über das Netz an die andere Serverplattform zustellen würde. Fortgeschrittenere Netzadapter können auch so implementiert sein, dass sie DMA(Direct Memory Access, Direktspeicherzugriff)-Leseanforderungen und -Schreibzugriffe unterstützen, was einen geringeren Prozessor-Overhead beinhaltet und sogar noch höhere Datenübertragungsraten ermöglicht.
  • Unterhalb der vorgenannten Übertragung CPU an PCIe-Endpunkt (z. B. PCIe-Karte 128) ist die Übertragungsrate im Allgemeinen auf die Bandbreite des PCIe-Interconnect 124, vermindert um Latenzen aufgrund von konkurrierenden PCIe-Transaktionen auf dem Interconnect, begrenzt. Unterhalb von PCIe 3.0 beträgt die maximale Bandbreite 985 MB/s pro Spur, wobei ein 8-spuriges (8x) Interconnect eine Bandbreite von annähernd 8 GB/s unterstützt und ein 16-spuriges (16x) Interconnect eine Bandbreite von annähernd 16 GB/s unterstützt.
  • Ein weiteres Merkmal von PCIe ist die Unterstützung der Peer-to-Peer(P2P)-Kommunikation, die die direkte Kommunikation zwischen PCIe-Geräten und erleichtert durch den PCIe-Root-Komplex erlaubt, ohne die Prozessorkerne der CPU zu beanspruchen. Beispielsweise können P2P-PCIe-Datenübertragungen eingesetzt werden, um Schreib- und Lesedatenübertragungen zwischen PCIe-Karten/-Geräten innerhalb derselben PCIe-Interconnecthierarchie zu ermöglichen, etwa zwischen PCIe-Karten 126 und 128 auf dem lokalen Sockel 108 und zwischen PCIe-Karten 116 und 118 auf dem entfernten Sockel 106.
  • Die Verwendung des IOHs hat ihren Ursprung in der bekannten Nordbrücke/Südbrücke-Computersystemarchitektur, wobei ein IOH der Südbrücke entspricht. Da P2P-Datenübertragungen historisch eher selten waren, bestand nur eine geringe Motivation, die vorhandenen IOH-Designs zu modifizieren, um höhere P2P-Übertragungsraten zu ermöglichen. Infolgedessen sind P2P-Leseanforderungen zwischen PCIe-Geräten auf annähernd 1 GB/s beschränkt, während PCIe-Schreibzugriffe nicht beschränkt sind. Datenübertragungen zwischen PCIe-Geräten auf separaten Sockeln mittels P2P-Verfahren sind sowohl für PCIe-Schreibzugriffe als auch -Leseanforderungen auf annähernd 300 MB/s beschränkt. Diese Beschränkungen führen zu einem Mangel an Verarbeitungskapazität, die von der PCIe-Root-Komplexarchitektur bereitgestellt wird, nicht dem PCIe-Interconnect und den PCIe-Schnittstellen.
  • Vor kurzem stellte Intel® seine Baureihe von Xeon PhiTM-Koprozessoren vor, die einen Prozessor mit zahlreichen integrierten Kernen umfassen, der auf einer PCIe-Karte implementiert ist. Diese Geräteklasse wird hier als Many-Integrated-Core-Gerät (Gerät mit zahlreichen integrierten Kernen) oder einfach MIC bezeichnet. In einer Ausführungsform umfasst ein MIC annähernd 60 Kerne, und es wird eine künftige Generation von Xeon PhiTM-Koprozessoren vorhergesehen mit oberhalb von 100 Kernen und darüber hinaus.
  • Die MIC-Architektur macht es möglich, dass eine einzige Serverplattform eine große Zahl von Rechenkernen unterstützt, insbesondere wenn mehrere MICs auf derselben Plattform installiert sind. Dies ist äußerst vorteilhaft für HPC-Umgebungen, insbesondere wo die Verarbeitungsaufgaben einen hohen Grad an Lokalität und Parallelität beinhalten. Wie vorstehend ausgeführt sind die Interconnects mit der geringsten Latenz diejenigen in den Prozessoren, da sie sehr große Bandbreite mit sehr geringen Längen verbinden. Entsprechend beinhaltet die Kommunikation zwischen Rechenkernen in einem MIC sehr niedrige Latenzen, was für HPC ideal ist.
  • Allerdings besteht immer noch ein Bedarf, Daten zwischen Rechenkernen in einem MIC und anderen Rechenkernen, sowohl innerhalb als auch außerhalb der Serverplattform, auf der das MIC untergebracht ist, zu übertragen. Verfahren zum Übertragen von Daten zwischen Rechenknoten auf separaten Plattformen sind in der Regel in Anbetracht der verfügbaren Hardware und Kostenerwägungen angemessen optimiert. Beispielsweise sind Netzadapter mit entsprechenden DMA-Übertragungseinrichtungen im HPC und in anderen Serverumgebungen weit verbreitet. Die Verwendung von PCIe-basierten Koprozessoren, z. B. GPGPUs und MICs, bringt eine geringfügig erhöhte Komplexität mit sich, da die Rechenknoten Kerne im Prozessor des MIC statt einer Sockel-CPU umfassen. Entsprechend sind bei den MICs Vorkehrungen getroffen, um sie an Netzausrüstung auf der Plattform, etwa Ethernet-Adaptern und InfiniBand Host-Controller-Adaptern (HCAs), anzubinden. Erkennbar nicht vorhanden sind Optimierungen in der PCIe-Architektur für den Datenaustausch zwischen PCIe-Geräten wie etwa MICs innerhalb derselben Plattform. Wie vorstehend erörtert, weisen die herkömmlichen PCIe-P2P-Datenübertragungseinrichtungen erhebliche Leistungsdefizite auf. Dies stellt eine ernstzunehmende Leistungseinbuße für HCA-Serverplattformen dar, auf denen mehrere PCIe-Karten, wie etwa MICs und IB-HCAs, implementiert sind, was in eingeschränkten Systemen resultiert.
  • Gemäß den hier beschriebenen Ausführungsformen werden Verfahren und Prinzipien offenbart, um Datenströme in eingeschränkten Systemen zu optimieren, etwa zwischen PCIe-basierten MICs auf derselben Serverplattform. Obwohl Technologie, wie etwa die PCIe-Peer-to-Peer-Kommunikation, die direkte Kommunikation in den und aus dem Speicher einer PCIe-Karte (etwa wie in einem PCIe-montierten MIC verwendet) unterstützt, sind über die Plattform manchmal Pfade höherer Bandbreite verfügbar. Die Ausführungsformen stellen ein dynamisches Mittel bereit, um selektiv diese Pfade mit größerer Bandbreite basierend auf dem Warteschlangenpaar oder der Verbindung zu nutzen. Die Nutzung alternativer Pfade bringt eine höhere Anwendungsleistung mit sich, ohne Anwendungsentwickler mit den Einzelheiten des Auswählens bestimmter Datenpfade zu belasten.
  • Auswahl und Nutzung alternativer Pfade erfolgen in einer für die Anwendungssoftware transparenten Weise, was den Ausführungsformen eine breitgefächerte Nutzbarkeit über mehrere Clients verleiht, einschließlich einer Vielzahl von MPI(Message Passing Interface, Nachrichtenaustauschschnittstelle)-Implementierungen (einschließlich, jedoch nicht beschränkt auf Intels MPI Library, OpenMPI und MVAPICH2). In Fällen, dass die alternativen Pfade eine wesentlich höhere Leistung bereitstellen als P2P, ergeben die Ausführungsformen eine erheblich höhere Leistung auf Anwendungsebene.
  • zeigt eine Serverplattform 200, die eine beispielhafte Umgebung veranschaulicht, in der die vorstehenden Komponenten implementiert werden können. Die allgemeine Architektur ähnelt der Serverplattform 100 von , wobei Komponenten mit gleichen Referenznummern in diesen beiden Abbildungen in gleicher Weise konfiguriert sind. Auf der Serverplattform 200 umfassen die PCIe-Karten jetzt drei MICs 202, 204 und 206 und einen InfiniBand-HCA 208, der mit einem InfiniBand(IB)-Fabric 210 gekoppelt ist. Diese PCIe-Karten sind als MICs 1, 2, 3 bzw. IB-HCA 1 nummeriert wie dargestellt. Diese Nummerierung ist getrennt von der PCIe-Interconnect-Nummerierung für jeden der vorstehend beschriebenen entfernten und lokalen Sockel 106 und 108; stattdessen wird sie von den Systemagenten genutzt, um die MIC-Instanzen und die IB-HCA-Instanz oder -Instanzen (auf Serverplattformen mit mehreren IB-HCAs) zu identifizieren. Jedes dieser MICs umfasst Speicher 210 und MIC-Software 302, die auf einem oder mehreren Kernen des (nicht dargestellten) Mehrkernprozessors des MIC ausgeführt wird. Jeder der Prozessoren 102 und 104 führt eine Instanz der Host-Software 300 aus, einschließlich eines uDAPL(user-level Direct Access Provider Library)-Proxy-Agenten 304, der in den User-Space („Benutzerraum”) in Speicher 110 bzw. 120 geladen ist.
  • veranschaulicht weitere Details der Host-Software 300 und der MIC-Software 302 gemäß einer Ausführungsform. Die MIC-Software 302 umfasst eine duale MPI(Message Passing Interface)-Schnittstelle 306, mit der ein Paar OFED(Open Fabrics Enterprise Distribution)-uDAPL-Provider-Clients, einschließlich eines MIC Connection Manager(uDAPL-mcm)-Provider-Clients 308 und eines User Connection Manager (uDAPL-ucm) Provider-Clients 310 verbunden sind. Der uDAPL-mcm-Provider-Client 308 leitet Daten vom MIC an den Host-Speicher, indem er die Daten mittels einer SCIF(Symmetric Communications Interface)-Verbindung 311, die durch eine SCIF-Schnittstelle 312 in der MIC-Software 302 und eine entsprechende SCIF-Schnittstelle 314 in der Host-Software 300 realisiert ist, an den uDAPL-Proxy-Agenten 304 sendet. Die MIC-Software 302 umfasst ferner eine IB-Verben-Bibliothek 316 und ein CCL-Direct-Modul 318, das verwendet wird, um die CCL-Direct(direct Coprocessor Communication Link)-Kommunikation zwischen MICs zu unterstützen. Die Host-Software 300 umfasst ferner eine MPI-Anwendung 320, ein uDAPL-MCM/UCM-Modul 322 und eine IB-Verben-Bibliothek 324. Wie weiter dargestellt, unterstützen sowohl die IB-Verben-Bibliothek 324 als auch das CCL-direct-Modul 318 die Kommunikation mit einem RDMA-Gerät 326 über ein PCIe-Interconnect 328.
  • Kernaspekte der Ausführungsformen umfassen einen Satz „Schatten”-Warteschlangenpaare und ein neues Drahtprotokoll, um Datenpfade mit mehreren Streckenabschnitten innerhalb und außerhalb der Plattform mithilfe zugehöriger Agenten zu verbinden und zu nutzen. Diese neuen Komponenten interagieren in einer Weise, dass die Quelle der Netzoperationen dynamisch gewählt werden kann, das Ziel dieser Operationen jedoch die verschiedenen Quellen nicht unterscheiden kann. In ähnlicher Weise fordert ein Anforderer der Netzoperation (typischerweise ein RDMA-Sende- oder -Schreibvorgang) eine spezifische Quellwarteschlange an, während die Implementierung wahlweise eine andere Quellwarteschlange wählen kann, um die Anforderung zu erfüllen.
  • In einer Ausführungsform besteht das System aus folgenden Komponenten:
    • 1) Warteschlangenpaare (Queue Pairs, QP) oder anderen Verbindungen zwischen zwei kommunizierenden Prozessendpunkten. Wenigstens eine Warteschlange ist auf einer PCIe-Karte, etwa einem MIC, angesiedelt.
    • 2) Für jede Warteschlange auf einer PCIe-Karte ist ein Schatten-Warteschlangenpaar vorhanden, bei dem eine Warteschlange auf dem entsprechenden Host angesiedelt ist und die andere Warteschlange am selben Ort angesiedelt ist wie die entfernte Warteschlange. Die Host-basierte Warteschlange wird als die Schatten-Warteschlange bezeichnet.
    • 3) Paare von Befehl, Verbindung und Datenagenten, die am selben Ort angesiedelt sind wie die beiden Endpunkte jedes Schatten-Warteschlangenpaares.
  • Wenn ein Client einer Warteschlange in QP (1) oben einen RDMA-Write-WQE (Work Queue Entry) abschickt, vergleicht der lokale Agent die Anforderung mit einer Liste von Regeln und bestimmt, ob der WQE an die lokale Warteschlange abgeschickt wird oder ob er ihn an seinen Peer-Agenten (3) schickt, der die Schatten-Warteschlange (2) verwaltet. Im letzteren Fall leitet der lokale Agent den WQE an den Peer-Agenten über den neuen Befehlskanal (3) an einen Peer-Datenbewegungsagenten (den Proxy-Agenten) weiter. Der Peer-Agent nutzt einen bereits bestehenden (z. B. RDMA-basierten oder sonstigen) Kommunikationskanal, um einen Teil der Nachrichtennutzlast an host-basierte Scratch-Puffer (Notizblockfunktion) zu übertragen. Danach schickt er einen modifizierten WQE an die lokale Schatten-Warteschlange ab, die die Übertragung des betreffenden Nachrichtenfragments veranlasst. Der Peer-Agent überträgt dann abwechselnd Nachrichtenfragmente aus dem Speicher der PCIe-Karte an Scratch-Puffer auf dem Host und schickt entsprechende WQEs ab, um die Übertragung in Gang zu setzen. Der Peer-Agent kann ein doppeltes Pufferungsschema verwenden, um den Gesamtdurchsatz zu optimieren und gleichzeitig die Latenz zwischen PCIe-Karte und Host zu verbergen. Sobald die ursprüngliche Nachrichtennutzlast, die in dem ursprünglichen WQE spezifiziert ist, vollständig übertragen ist, benachrichtigt der host-basierte Peer-Agent den PCIe-Karten-basierten Agenten, der einen entsprechenden Eintrag in die QP-Abschlusswarteschlange (CQE) schickt.
  • Diese Anwendung mit dem Herstellen und Nutzen geteilter Kommunikationskanäle mit Endpunkten an mehreren Orten bietet Vorteile gegenüber herkömmlichen Lösungsansätzen. In den hier beschriebenen Ausführungsformen nehmen Sende- und Empfangskanäle unterschiedliche Pfade mit eindeutigen Endpunktpositionen für einen optimalen Datenfluss basierend auf den Kapazitäten von Quelle und Ziel. Dies wird erreicht, indem mehrere Hochleistungspfade durch den Server anstelle eines einzelnen, langsameren Pfades gewählt und genutzt werden. Darüber hinaus kann jeder Pfad einen Proxy-Server in den Pfad einfügen, um mit Datenraten zu unterstützen. Beispielsweise haben Proxy-Datenserver keine P2P-Beschränkung mit HOST zu MIC oder mit HOST zu HCA und ermöglichen somit Übertragungsraten, die in die Nähe von IB QDR(Quad Data Rate, vierfache Datenrate)/FDR (Fourteen Data Rate, vierzehnfache Datenrate) Leitungsgeschwindigkeiten kommen. Die gepufferte, fragmentierte Übertragung einer einzigen größeren Nutzlast über einen standardmäßigen Kommunikationskanal (SCIF in einer Ausführungsform) und in einer für den Kommunikations-Client transparenten Weise stellt einen neuartigen Ansatz mit wesentlichen Leistungsvorteilen gegenüber bestehenden Lösungsansätzen dar.
  • Ein Verbindungsmechanismus für sowohl multidirektionale als auch für multilokale Endpunkte wird ebenfalls bereitgestellt. Dies wird in einigen Ausführungsformen durch Verwendung eines neuen Verbindungsverwaltungs(Connection Management, CM)-Drahtprotokolls (über IB-Fabric) implementiert, um Erkennung, Kanaleinrichtung und Platzierung von Endpunkt und Proxy-Agenten abzuwickeln. Darüber hinaus gibt es ein neues Betriebskanalprotokoll (SCIF in einer Ausführungsform), das von Proxy-Client zu Proxy-Server Agentenunterstützung bereitstellt für Management-, CM- und RDMA-Schreiboperationen. In diesem Fall begrenzen Leseprobleme der P2P-Plattform die Datenraten auf 1 GB/s, daher ist es vorzuziehen, HCA-Leseanforderungen von einem MIC auf der Quellseite zu vermeiden und für RDMA-Schreiboperationen einen Proxy-Agenten zu nutzen. Auf der Zielseite führt der HCA P2P-Schreibzugriffe auf den MIC aus und ist nicht begrenzt, so dass auf der Empfangsseite des Kanals kein Proxy-Agent eingerichtet ist.
  • zeigt die Grundstruktur von Datenströmen zwischen zwei lokalen MIC-Endpunkten MIC 1 und MIC 2 auf jeweiligen Serverplattformen 200-1 und 200-2. Wie in den Zeichnungen hier verwendet, werden physische Warteschlangenpaare (Queue Pairs, QP) mit weißem Hintergrund dargestellt, Schatten-QPs dagegen werden mit grauem Hintergrund dargestellt. Außerdem ist eine Empfangshälfte eines Warteschlangenpaares mit QPrx beschriftet, während die Sendehälfte des Warteschlangenpaares mit QPtx bezeichnet ist.
  • Während des Einrichtungsprozesses wird Pufferplatz für die Schatten-QPs wie folgt zugeteilt. Für Übertragungen von MIC 1 an MIC 2 wird eine Schatten-Sendewarteschlange 400 auf dem lokalen Host (Host 1) zugeteilt, während eine Schatten-Empfangfswarteschlange 402 für den uDAPL-MCM-Provider-Client 308-2, der per Software im entfernten MIC gehostet ist, zugeteilt wird. In ähnlicher Weise wird für Übertragungen von MIC 2 an MIC 1 eine Schatten-Sendewarteschlange 404 auf dem lokalen Host (Host 2) zugeteilt, während eine Schatten-Empfangswarteschlange 406 für den uDAPL-MCM-Provider-Client 308-1 zugeteilt wird.
  • Der Datenstrom von MIC 1 an MIC 2 verläuft folgendermaßen. Der uDAPL-MCM-Provider-Client 308-1 überträgt Daten über eine SCIF-Verbindung 312-1 an den Proxy-Agenten 3041-1, wo sie in der Schatten-Sendewarteschlange 400, die als Ausgangswarteschlange dient, gepuffert werden. Wie nachstehend beschrieben, werden Datenübertragungen in einer Ausführungsform fragmentiert, so dass eine gegebene Datenübertragung das Übertragen von einem oder mehreren Datenfragment(en) umfasst. Die Daten werden aus der Schatten-Sendewarteschlange 400 an den HCA 208-1 übertragen. Die Daten werden in IB-Pakete eingekapselt, an das IB-Fabric gesendet und am HCA 208-2 auf Plattform 200-2 empfangen. An dieser Stelle erfolgt eine direkte Übertragung HCA-an-MIC mittels eines PCIe-P2P-Schreibzugriffs, wobei die Daten am MCM-Provider-Client 308-2 in der Schatten-Empfangswarteschlange 402 empfangen werden.
  • Datenübertragungen in der entgegengesetzten Richtung (von MIC 2 an MIC 1) werden ähnlich durchgeführt. Der MCM-Provider-Client 308-2 überträgt Daten über eine SCIF-Verbindung 312-2 an den Proxy-Agent 3041-2, wo sie in der Schatten-Sendewarteschlange 404 gepuffert werden. Als Nächstes werden die Daten aus der Schatten-Sendewarteschlange 402 an den HCA 208-2 übertragen. Danach werden die Daten in IB-Pakete eingekapselt, an das IB-Fabric gesendet und am HCA 208-1 auf Plattform 200-1 empfangen. Dann erfolgt eine direkte Übertragung HCA-an-MIC mittels eines PCIe-P2P-Schreibzugriffs, wobei die Daten am MCM-Provider-Client 308-2 in der Schatten-Empfangswarteschlange 406 empfangen werden.
  • ist eine Darstellung, die (nur Quellseite) ein Beispiel dafür zeigt, wie Daten fragmentiert und über einen Proxy-Agenten verschoben werden, für einen standardmäßigen RDMA-Schreibbefehl. Auf dieser Stufe ist das neue CM-Protokoll bereits entdeckt worden und sind optimale geteilte Datenkanäle mit einem MIC-HOST-Proxy-Agenten an der Quelle und einem Direktkanal zum MIC auf der Zielseite eingerichtet; diese Operationen werden durch einen CM & Event-Programmfaden 500 ermöglicht. Während eines standardmäßigen Geräteröffnungs- und darauffolgenden QP-Einrichtungsanrufs werden ein Proxy-Puffer 502 und Schatten-QP-Ressourcen zugeteilt und sowohl für SCIF als auch für IB registriert. In das Betriebsprotokoll dieser Ausführungsform ist ein Flusssteuerungsmechanismus sowohl für den Proxy-Puffer als auch für die QPtx-Ressourcen eingebaut.
  • Es wird ferner Bezug auf das Flussdiagramm 600 in genommen, in dem der Datenübertragungsprozess wie folgt weiterläuft. Diese Operationen werden zum Teil durch den Ops-Programmfaden 504 ermöglicht. Zuerst wird in einem Block 602 für RDMA-Schreibzugriffe der Standardruf post_send auf dem MIC an die QPtx-Schattenwarteschlange des Hosts (im Proxy-Puffer 502 implementiert) über eine mcm_send-Operation über den SCIF-Kanal weitergeleitet. Auf Grundlage des Umfangs der Datenübertragung wird eine geeignete Segmentgröße eingerichtet und werden die optimalen Betriebskanal-DMA-Mechanismen verwendet. Außerdem werden entsprechende Segmentarbeitsanforderungen eingerichtet, die in die Schatten-Sendewarteschlangen WRs 506 eingefügt werden. Als Nächstes führt in Block 604 der Host eine Leseanforderung SCIF_read aus dem MIC-Benutzerspeicher 508 aus, um Datensegmente in den Proxy-Puffer 502 auf dem Host zu kopieren. Nach Beendigung des ersten Segments wird dieses Segment direkt an den Zielpuffer 510 gesendet, wozu Original-Adresse und -rkey der Anwendung verwendet werden. In einem Block 606 sendet der Host ein SCIF_fence_signal an eine QPtx-Sendewarteschlange 512 im Zielpuffer 508. Anschließend wird ein ibv_post_send vom IB_send-Programmfaden in einem Block 608 ausgegeben, und eine entsprechende DMA-Datenübertragung wird durchgeführt, um die Datensegmente aus der QPtx--Sendewarteschlange 512 an den IB-HCA 208 zu übertragen. Sobald die Datenübertragung zum entfernten Ziel für jede WRE abgeschlossen ist, kann in einem Block 612 ein Abschlusswarteschlangen(CQ)-Ereignis gemeldet werden (falls signalisiert). In Reaktion auf die Erkennung des CQ werden entsprechende Proxy-Puffer- und WR-Ressourcen freigegeben. In ähnlicher Weise kann, in einer Ausführungsform, sobald die Daten vom MIC an den Proxy übertragen sind, das MIC signalisiert werden, so dass die Anwendung den Sendepuffer wieder nutzen kann.
  • zeigt eine schematische Darstellung einer Datenübertragung von einem MIC 206-1 auf Plattform 200-1 an einen MIC 206-2 auf Plattform 200-2. Beide, MIC 206-1 und 206-2, sind lokal auf ihrer jeweiligen IB-HCA-Karte 208-1 bzw. 208-2 und sind an dieselben PCI-Busse angeschlossen wie die IB-HCA-Karten. Dementsprechend ist dies eine Übertragung lokal-an-lokal, die hier auch als KL-KL-Übertragung bezeichnet wird. Entsprechende Einzelheiten zu den Puffer und den zugehörigen Software-Clients und -Agenten für eine KL-KL-Übertragung sind in dargestellt.
  • Auf der dargestellten Ebene beinhaltet die Datenübertragung vom MIC 206-1 an das MIC 206-2 vier Übertragungsvorgänge. Fachleute auf diesem Gebiet der Technik werden jedoch erkennen, dass die veranschaulichten Übertragungen noch weitere Pufferung beinhalten können, die der Übersichtlichkeit und Verständlichkeit halber hier nicht dargestellt ist. Jede der Übertragungen ist durch eine eingekreiste Nummer (z. B. 1, 2, 3 und 4 in und ) gekennzeichnet. Übertragung „1” stellt eine Übertragung aus einem Pufferspeicher des MIC 206-1 in den Host-Speicher 120-1 auf dem lokalen Sockel 108-1 (Rost 1) dar. Wie vorstehend unter Bezugnahme auf und erörtert, stellt dies eine Daten-Proxy-Operation dar, die Daten aus einem Sendepuffer 700 im MCM-Provider 308-1 in eine Schatten-Sendewarteschlange 400 im Host-Speicher 120-1, der mit dem Proxy-Agenten 3041-1 verknüpft ist, kopiert. In der veranschaulichten Ausführungsform ist dies ein DMA-Schreibzugriff aus dem MMIO-Adressraum auf dem MIC 206-1 in den Host-Speicher 120-1, der über das PCIe-Interconnect 124-1 per IOH 122-1 und mittels SCIF übertragen wird. Dies ist auch als Proxy-Datenübertragung 704 vom Quell-Endpunkt (MIC 206-1) in die QP1-Schatten-Sendewarteschlange 400 dargestellt.
  • Übertragung „2” umfasst eine weitere DMA-Übertragung aus dem Host-Speicher 120-1 an den IB-HCA 208-1. Als weiteres Detail werden Daten aus der Schatten-Sendewarteschlange 400 in einen Sendepuffer auf der IB-HCA-Karte 208-1 übertragen. Die DMA-Übertragung umfasst einen Speicherlesevorgang und anschließend einen PCI-Schreibzugriff auf den MMIO auf der IB-HCA-Karte 208. Dementsprechend verläuft der physische Datenpfad vom Host-Speicher 120-1 über den Prozessor 104-1 zum IOH 122-1 und danach über das PCIe-Interconnect 124-1 zur IB-HCA-Karte 208-1.
  • Übertragung „3” ist eine herkömmliche InfiniBand-Datenübertragung zwischen zwei IB-Endpunkten (IB-HCA-Karten 208-1 und 208-2), die an das IB-Fabric 210 angeschlossen sind. Ein oder mehrere Datenfragmente sind an dem sendenden IB-Endpunkt (IB-HCA-Karte 208-1) gepuffert, und entsprechende Daten werden in einem oder mehreren IB-Paketen an den empfangenden IB-Endpunkt (IB-HCA-Karte 208-2) gesendet.
  • Die Datenübertragung vom MIC 206-1 an das MIC 206-2 wird mittels einer P2P-Übertragung über das PCIe-Interconnect 124-2 von der IB-HCA-Karte 208-2 an das MIC 206-2 ausgeführt wie durch eine Übertragung „4” dargestellt. Je nach dem Umfang der Übertragung kann dies durch einen oder mehrere PCIe-P2P-Schreibzugriffe erfolgen. In einer Ausführungsform nutzen die direkten P2P-Übertragungen CCL-Direktübertragungen. Wie in gezeigt, werden die Daten von der IB-HCA-Karte 208-2 an die Schatten-Empfangswarteschlange 702, die Peer-Warteschlange der Schatten-Sendewarteschlange 400, übertragen.
  • und veranschaulichen ein Beispiel einer Datenübertragung lokal an entfernt (KL-KR) von MIC 206-1 an MIC 202-2. Die ersten drei Übertragungen sind identisch mit den in und dargestellten und vorstehend beschriebenen, an welchem Punkt die übertragenen Daten von IB-HCA 208-2 empfangen werden. An diesem Punkt erfolgt eine NUMA(Non-Uniform Memory Access, nicht-einheitlicher Speicherzugriff)-Datenübertragung vom IB-HCA 208-2 an eine QP2-Empfangswarteschlange 802 im Speicher 110-2, wie als Übertragung „4” dargestellt. Dies ist auch als eine Übertragung Proxy-an-Proxy 804 dargestellt. In einer NUMA-Architektur, wie sie etwa von den Zweisockel-Plattformen 200-1 und 200-2 verwendet werden, ist jeder Sockel in der Lage, auf seinen eigenen lokalen Speicher zuzugreifen und auf einen entfernten Speicher auf einem anderen Sockel zuzugreifen und dazu zwei verschiedene (und somit nicht-einheitliche) Speicherzugriffsmechanismen zu nutzen.
  • In einer Ausführungsform verläuft die NUMA-Datenübertragung vom IB-HCA 208-2 in den Speicher 110-2 folgendermaßen. Während der Initialisierung der Plattform oder anderweitig im Vorfeld von Datenübertragungen über IB-HCAs werden diverse MMIO(Memory-Mapped IO, speicherabgebildete Ein-/Ausgabe)-Adressräume für die IB-HCAs ebenso zugeteilt wie für andere PCIe-Geräte, etwa die MICs. Für die NUMA-Konfiguration wird MMIO-Adressraum von beiden Sockeln zugeteilt. Die Datenübertragung ist eine PCIe-Transaktion, welche die Übertragung eines oder mehrerer PCIe-Pakete umfasst, bei der der Zielendpunkt anhand einer entsprechenden MMIO-Adresse identifiziert wird – in diesem Fall eine MMIO-Adresse im Speicher 110-2. Sowie die PCIe-Pakete über das lokale PCIe-Interconnect an den lokalen PCIe-Root-Komplex weitergeleitet werden, wird die Zieladresse von einem PCIe-Agenten oder dergleichen untersucht und als auf einem anderen Sockel liegend identifiziert, auf den nicht lokal zugegriffen werden kann. In der veranschaulichten Ausführungsform besteht ein Sockel-zu-Sockel-QPI-Interconnect 130-2 für Plattform 200-2. QPI arbeitet mit paketbasierten Transaktionen unter Verwendung eines mehrschichtigen QPI-Protokolls mit Quell- und Ziel-QPI-Endpunkten. Die Weiterleitung der PCIe-Pakete wird an einen QPI-Agenten oder dergleichen übergeben, der mit dem Prozessor 104-2 assoziiert ist, welcher das/die PCIe-Paket(e) in ein oder mehrere QPI-Paket(e) einkapselt, das/die mittels Prozessor 104-2 über QPI-Interconnect 130-2 an den Prozessor 102-2 übertragen wird/werden. Nach Empfang am QPI-Zielpunkt entkapselt ein anderer QPI-Agent das/die PCIe-Paket(e), und anschließend werden die PCIe-Pakete an einen PCIe-Agenten weitergeleitet, der mit Prozessor 102-2 assoziiert ist, der eine oder mehrere Speicherschreibtransaktionen erzeugt, um die übertragenen Daten an der MMIO-Adresse, die durch die PCIe-Transaktion angegeben ist, in den Speicher 110-2 zu schreiben. In ähnlicher Weise wie in dargestellt, kann in einer Ausführungsform diese Datenübertragung unter Verwendung eines oder mehrerer Fragmente durchgeführt werden.
  • Als Ergebnis des vorstehenden werden Daten vom IB-HCA 208-2 in die QP2-Empfangswarteschlange 802 im Speicher 110-2 übertragen, wie vorstehend erörtert. Die Daten werden intern durch den Proxy-Agenten 304r-2 aus der QP2-Empfangswarteschlange 802 in eine QP2-Sendewarteschlange 806 übertragen. Gemäß einer Übertragung „5” werden die Daten danach aus der QP2-Sendewarteschlange 806 in einer DMA-Übertragung in den Speicher im MIC 202-2 weitergeleitet. Dies ist auch als Proxy-Endpunkt-Empfangsübertragung 804 in die QP1-Schatten-Empfangswarteschlange 702 am Zielendpunkt (MIC 202-2) dargestellt.
  • und veranschaulichen ein Beispiel einer Übertragung von einem entfernten MIC an ein entferntes MIC, auch als KR-KR bezeichnet. In diesem Beispiel erfolgt die Übertragung von MIC 204-1 an MCI 202-2, die beide entfernte PCIe-Geräte sind (bezogen auf die lokalen IB-HCAs auf den Plattformen 200-1 und 200-2). Übertragungen „2”–„5” sind identisch mit denjenigen in der beispielhaften KL-KR-Übertragung der und . In Verbindung mit einer ersten Übertragung „1” überträgt MIC 204-1 Daten an eine QP2-Schatten-Sendewarteschlange 810 im Speicher 120-1. Wie zuvor erfolgt dies über einen NUMA-Speicherschreibvorgang in einen MMIO-Adressraum im Speicher 120-1, der MIC 204-1 zugeteilt ist. Übertragungen „2”, „3” und „4” ermöglichen zusammengenommen eine Proxy-an-Proxy-Datenübertragung von Daten, die aus der QP2-Schatten-Sendewarteschlange 810 in die QP2-Schatten-Sendewarteschlange 810 in die QP2-Empfangswarteschlange im Speicher 110-2 übertragen werden. Die Datenübertragung wird in Übertragung „5” abgeschlossen, die der Übertragung „5” in der KL-KR-Übertragung der und entspricht.
  • zeigt eine Tabelle 1000, die verschiedene Übertragungskombinationen zwischen Endpunkten auf verschiedenen Plattformen darstellt, die durch eine Übertragung per IB-Fabric zwischen IB-HCAs auf den Plattformen ermöglicht werden (und somit eine Übertragung außerhalb der Servergehäuse erlauben). Außer Weiterleitungspfaden gibt Tabelle 1000 auch den Rückpfad für jede Übertragungsart an, wobei der Rückpfad von rechts nach links zu lesen ist statt von links nach rechts.
  • zeigt eine Softwarearchitektur 1100 zum Implementieren von RDMA über SCIF und InfiniBand gemäß einer Ausführungsform. In sind die mit fettgedruckten Umrandungen dargestellten Komponenten neue Komponenten, während die übrigen Komponenten vorhandenen Komponenten entsprechen. Die User-Space-Komponenten umfassen eine MPI-Anwendung 1102, ein uDAPL-Modul 1104, eine IB-Verben-Bibliothek 1106 und eine neue IB-SCIF-Bibliothek 1108. Die Kernel-Modus-Komponenten umfassen ein IB-uverbs-Modul 1110, ein IB-Kernmodul 1112, einen neuen IB-SCIF-Treiber 1114 und ein neues SCIF-Modul 1116.
  • In einer Ausführungsform verwendet RDMA über SCIF/IB die Kern-OFA-Softwaremodule der Open Fabrics Alliance, einschließlich IB-Verben-Bibliothek 1106, IB-uverbs-Modul 1110 und IB-Kernmodul 1112. Der IB-SCIF-Treiber 1114 ist ein(e) neue(r) hardwarespezifische(r) Treiber und Bibliothek, der/die auf die OFED-Kern-Mittelschicht aufsetzt. SCIF ist die niedrigste Stufe eines Kommunikationstreibers zwischen einem PCIe-Gerät und einem Prozessor, etwa zwischen einem MIC und einem Xeon®-Prozessor. Die Architektur 1100 stellt standardmäßige RDMA-Verben-Schnittstellen innerhalb der Plattform bereit. Wie vorstehend erörtert, werden die diversen hier beschriebenen Proxy-Operationen in einer Weise ausgeführt, die für die auf den Datenübertragungs-Endpunkten laufende Software transparent ist; aus Sicht der Softwareanwendungen erscheinen die Proxy-Datenübertragungen wie direkte Datenübertragungen von einem Quell-Endpunkt zu einem Ziel-Endpunkt.
  • Ein anderes Merkmal einiger Ausführungsformen wird als MPI-Dual-DAPL bezeichnet. Mit diesem Merkmal wählt Software, die an den Übertragungsquellpunkten läuft, auf intelligente Weise, ob die Daten über direkte PCIe-CCL-P2P-Datenpfade übertragen werden sollen oder ob eine Proxy-Übertragung verwendet werden soll. In einer Ausführungsform werden kurze Nachrichten über einen direkten CCL-Pfad gesendet, während umfangreiche Nachrichten über einen CCL-Proxy-Pfad übertragen werden. Diese duale Übertragungsweise ermöglicht es einer MPI-Anwendung, Übertragungen sowohl mit geringer Latenz als auch mit großer Bandbreite abzuwickeln.
  • zeigt ein Flussdiagramm 1200, das Operationen und Logik zum Implementieren von MPI-Dual-DAPL veranschaulicht, gemäß einer Ausführungsform. Der Prozess beginnt in Reaktion darauf, dass eine MPI-Anwendung erkennt, dass sie Daten zu übertragen hat, wie in Block 1202 dargestellt. In einem Entscheidungsblock 1204 erfolgt eine Bestimmung, ob ein Proxy-Datenpfad verfügbar ist oder ob nur ein direkter P2P-Pfad zur Verfügung steht. Steht nur ein direkter P2P-Pfad zur Verfügung, springt die Logik weiter zu einem Block 1206, in dem eine Übertragung über einen direkten Pfad ausgeführt wird, etwa mit CCL direkt.
  • Falls sowohl ein Proxy-Pfad als auch ein direkter Pfad verfügbar sind, wird in einem Entscheidungsblock 1208 bestimmt, ob der Umfang der Datenübertragung einen Schwellwert übersteigt. Ein Schwellwert kann beispielsweise bestimmt werden, indem ein komparativer Test der Datenübertragungsleistung anhand von Übertragungen unterschiedlichen Umfangs sowohl über direkte Pfade als auch über Proxy-Pfade durchgeführt wird. Für Datenübertragungen, deren Umfang größer ist als der Schwellwert, erfolgt die Übertragung über einen Proxy-Pfad, wie in Block 1210 dargestellt. Für Übertragungen unterhalb des Schwellwerts lautet die Antwort im Entscheidungsblock 1208 NEIN, was bewirkt, dass die Logik zu Block 1206 weiterspringt, um eine Übertragung über einen direkten Pfad durchzuführen.
  • Weitere Aspekte des hier beschriebenen Erfindungsgegenstands sind in den nachstehenden nummerierten Absätzen ausgeführt:
    • Absatz 1. Verfahren, das umfasst: Implementieren eines Proxy zum Übertragen erster Daten von einer ersten PCIe(Peripheral Component Interconnect Express)-Karte, die mit einem ersten PCIe-Interconnect gekoppelt ist, an einen PCIe-IB-HCA (InfiniBand Host Channel Adapter), der mit dem PCIe-Interconnect und einem IB-Fabric gekoppelt ist, wobei die ersten Daten von der ersten PCIe-Karte über den IB-HCA an ein Ziel zu senden sind, das über das IB-Fabric erreichbar ist; Empfangen zweiter Daten von dem IB-Fabric am PCIe-IB-HCA, die für die erste PCIe-Karte bestimmt sind; und Übertragen der zweiten Daten vom IB-HCA direkt an die erste PCIe-Karte mittels einer ersten PCIe-P2P(Peer-to-Peer)-Datenübertragung, wobei das erste PCIe-Interconnect in Kommunikationsverbindung mit einem ersten Host-Prozessor steht, der einen ersten Host-Speicher besitzt, und wobei ein Datenpfad, welcher der Proxy-Übertragung der ersten Daten entspricht, eine erste Datenübertragung von der ersten PCIe-Karte an den ersten Host-Speicher und eine zweite Datenübertragung von dem ersten Host-Speicher an den IB-HCA umfasst.
    • Absatz 2. Verfahren nach Absatz 1, ferner umfassend das Implementieren einer ersten Schatten-Sendewarteschlange in dem ersten Host-Speicher und das Implementieren einer zweiten Schatten-Empfangswarteschlange im Speicher der ersten PCIe-Karte, wobei die Schatten-Sendewarteschlange einer Sendehälfte eines ersten Schattenwarteschlangenpaars entspricht und die zweite Empfangswarteschlange einer Empfangshälfte eines zweiten Schattenwarteschlangenpaars entspricht.
    • Absatz 3. Verfahren nach Absatz 1 oder 2, ferner umfassend das Übertragen dritter Daten von der ersten PCIe-Karte an den IB-HCA direkt über eine zweite PCIe-P2P-Übertragung.
    • Absatz 4. Verfahren nach Absatz 3, ferner umfassend das Implementieren eines Schwellwerts für die Datenübertragung, um zu bestimmen, ob eine Datenübertragung von der ersten PCIe-Karte an den IB-HCA über einen Proxy-Pfad oder über einen direkten P2P-Pfad weitergeleitet werden soll.
    • Absatz 5. Verfahren nach einem der vorstehenden Absätze, wobei die erste PCIe-Karte einen Prozessor mit zahlreichen integrierten Kernen (MIC) umfasst.
    • Absatz 6. Verfahren nach einem der vorstehenden Absätze, wobei die erste PCIe-Karte und der IB-HCA an ein erstes PCIe-Interconnect gekoppelt sind, das auf einem lokalen Sockel auf einer Plattform mit mehreren Sockeln implementiert ist, wobei das Verfahren ferner umfasst, einen Proxy zu implementieren, um dritte Daten von einer zweiten PCIe-Karte, die an ein zweites PCIe-Interconnect angeschlossen ist, welches auf einem entfernten Sockel der Serverplattform mit mehreren Sockeln implementiert ist, an den IB-HCA zu übertragen.
    • Absatz 7. Verfahren nach Absatz 6, wobei die Serverplattform mit mehreren Sockeln in einer NUMA(Non-Uniform Memory Access)-Architektur konfiguriert ist, unter der jeder Sockel einen jeweiligen Host-Prozessor aufweist, der mit dem Host-Speicher gekoppelt ist, und das PCIe-Interconnect in Kommunikationsverbindung mit dem Host-Prozessor steht, wobei das erste PCIe-Interconnect auf einem lokalen Sockel angesiedelt ist, der einen ersten Host-Prozessor und einen ersten Host-Speicher aufweist, wobei das zweite PCIe-Interconnect auf einem entfernten Sockel angesiedelt ist, der einen zweiten Host-Prozessor umfasst, wobei die Serverplattform mit mehreren Sockeln ferner ein Sockel-zu-Sockel-Interconnect aufweist, das den ersten und den zweiten Host-Prozessor kommunikativ koppelt, und wobei das Implementieren des Proxy zum Übertragen der dritten Daten von der zweiten PCIe-Karte an den IB-HCA umfasst, eine NUMA-DMA(Direct Memory Access)-Übertragung aus dem Speicher auf der zweiten PCIe-Karte in den ersten Host-Speicher durchzuführen.
    • Absatz 8. Verfahren nach einem der vorstehenden Absätze 1, wobei die erste PCIe-Karte und der IB-HCA an ein erstes PCIe-Interconnect gekoppelt sind, das auf einem lokalen Sockel auf einer Serverplattform mit mehreren Sockeln implementiert ist, wobei das Verfahren ferner umfasst, einen Proxy zu implementieren, um dritte Daten, die vom IB-Fabric auf dem IB-HCA empfangen wurden, an eine zweite PCIe-Karte zu übertragen, die an ein zweites PCIe-Interconnect angeschlossen ist, welches auf einem entfernten Sockel der Serverplattform mit mehreren Sockeln implementiert ist.
    • Absatz 9. Verfahren nach Absatz 8, wobei die Serverplattform mit mehreren Sockeln in einer NUMA(Non-Uniform Memory Access)-Architektur konfiguriert ist, unter der jeder Sockel einen jeweiligen Host-Prozessor aufweist, der mit dem Host-Speicher gekoppelt ist, und das PCIe-Interconnect in Kommunikationsverbindung mit dem Host-Prozessor steht, wobei das erste PCIe-Interconnect auf einem lokalen Sockel angesiedelt ist, der einen ersten Host-Prozessor und einen ersten Host-Speicher aufweist, wobei das zweite PCIe-Interconnect auf einem entfernten Sockel angesiedelt ist, der einen zweiten Host-Prozessor umfasst, wobei die Serverplattform mit mehreren Sockeln ferner ein Sockel-zu-Sockel-Interconnect aufweist, das den ersten und den zweiten Host-Prozessor kommunikativ koppelt, und wobei das Implementieren des Proxy zum Übertragen der dritten Daten vom IB-HCA an die zweite PCIe-Karte umfasst, eine NUMA-DMA(Direct Memory Access)-Übertragung vom IB-HCA in den zweiten Host-Speicher durchzuführen.
    • Absatz 10. Gegenständlicher, nichtflüchtiger, maschinenlesbarer Datenträger, auf dem Softwareanweisungen gespeichert sind, die dafür ausgelegt sind, von wenigstens einem Prozessor ausgeführt zu werden, um das Verfahren nach einem der vorstehenden Absätze durchzuführen.
    • Absatz 11. PCIe(Peripheral Component Interconnect Express)-Vorrichtung, die dafür ausgelegt ist, auf einer Serverplattform mit mehreren Sockeln installiert zu werden, die einen lokalen Sockel mit einem ersten Host-Prozessor, der mit einem ersten Host-Speicher und einem ersten PCIe-Interconnect gekoppelt ist, und einen entfernten Sockel mit einem zweiten Host-Prozessor, der mit einem zweiten Host-Speicher und einem zweiten PCIe-Interconnect gekoppelt ist, umfasst, wobei die Serverplattform mit mehreren Sockeln weiterhin einen IB-HCA (InfiniBand Host Channel Adaptor) umfasst, der mit dem ersten PCIe-Interconnect gekoppelt ist, wobei die PCIe-Vorrichtung umfasst: einen Prozessor; und Speicher, der mit dem Prozessor gekoppelt ist und in dem Softwareanweisungen gespeichert sind, um Operationen durchzuführen, wenn diese durch einen Prozessor ausgeführt werden, wodurch die Vorrichtung in der Lage ist, eine erste Sendewarteschlange im Speicher zuzuteilen; erste Daten in die erste Sendewarteschlange einzustellen, wobei die ersten Daten von der Serverplattform mit mehreren Sockeln über den IB-HCA nach extern zu übertragen sind; die ersten Daten aus der ersten Sendewarteschlange an einen ersten Proxy-Agenten zu übertragen, wobei die ersten Daten von dem ersten Proxy-Agenten an den IB-HCA weiterzuleiten sind; und zweite Daten zu empfangen, die von dem IB-HCA gesendet werden, wobei die ersten und zweiten Daten zwischen der PCIe-Vorrichtung und dem IB-HCA entlang verschiedener Pfade übertragen werden, und wobei die PCIe-Vorrichtung dafür ausgelegt ist, jeweils einzeln in jedem von einem ersten PCIe-Steckplatz, der mit dem ersten PCIe-Interconnect gekoppelt ist, und einem zweiten PCIe-Steckplatz, der mit dem zweiten PCIe-Interconnect gekoppelt ist, installiert zu werden.
    • Absatz 12. PCIe-Vorrichtung von Absatz 11, wobei die zweiten Daten von dem IB-HCA mittels einer direkten PCIe-P2P(Peer-to-Peer)-Datenübertragung empfangen werden.
    • Absatz 13. PCIe-Vorrichtung von Absatz 11 oder 12, wobei die Softwareanweisungen ferner dazu dienen: die Verbindung zu Software herzustellen, die auf dem ersten Host-Prozessor läuft, um eine Schatten-Sendewarteschlange zuzuteilen; und eine DMA(Direct Memory Access)-Datenübertragung durchzuführen, um die ersten Daten in die Schatten-Sendewarteschlange zu übertragen.
    • Absatz 14. PCIe-Vorrichtung von einem der Absätze 11–13, wobei die Softwareanweisungen ferner dazu dienen: die Verbindung zu Software herzustellen, die auf einer außerhalb der Serverplattform mit mehreren Sockeln liegenden Vorrichtung, von wo aus die zweiten Daten gesendet werden, läuft, um eine Schatten-Empfangswarteschlange zuzuteilen; und die zweiten Daten in der Schatten-Empfangswarteschlange zu Puffern, wenn sie vom IB-HCA empfangen werden.
    • Absatz 15. PCIe-Vorrichtung von einem der Absätze 11–14, wobei die Softwareanweisungen ferner dazu dienen, eine SCIF(Symmetric Communications Interface)-Verbindung zu dem ersten Proxy-Agenten herzustellen und die ersten Daten über die SCIF-Verbindung an den ersten Proxy-Agenten zu übertragen.
    • Absatz 16. PCIe-Vorrichtung von einem der Absätze 11–15, wobei die Softwareanweisungen ferner dazu dienen: eine zweite Sendewarteschlange im Speicher zuzuteilen; dritte Daten in die zweite Sendewarteschlange einzustellen, wobei die dritten Daten von der Serverplattform mit mehreren Sockeln über den IB-HCA nach extern zu übertragen sind; die dritten Daten aus der zweiten Sendewarteschlange mittels einer zweiten direkten PCIe-P2P-Übertragung direkt an den IB-HCA zu übertragen.
    • Absatz 17. PCIe-Vorrichtung von Absatz 16, wobei die Softwareanweisungen ferner dazu dienen, einen Schwellwert für die Datenübertragung zu implementieren, um zu bestimmen, ob eine Datenübertragung von der PCIe-Vorrichtung an den IB-HCA über einen Proxy-Pfad unter Verwendung eines ersten Proxy-Agenten oder über einen direkten P2P-Pfad weitergeleitet werden soll.
    • Absatz 18. PCIe-Vorrichtung von einem der Absätze 11–17, wobei jeder der lokalen und entfernten Sockel in einer NUMA(Non-Uniform Memory Access)-Architektur konfiguriert ist und der erste und der zweite Prozessor über ein Sockel-zu-Sockel-Interconnect kommunikativ gekoppelt sind, und wobei, wenn die PCIe-Vorrichtung in dem zweiten PCIe-Steckplatz installiert ist, die ersten Daten aus der ersten Sendewarteschlange an den ersten Proxy-Agenten mittels einer NUMA-Datenübertragung übertragen werden, die einen Pfad über das Sockel-zu-Sockel-Interconnect umfasst.
    • Absatz 19. PCIe-Vorrichtung von einem der Absätze 11–18, wobei jeder der lokalen und entfernten Sockel in einer NUMA(Non-Uniform Memory Access)-Architektur konfiguriert ist und der erste und der zweite Prozessor über ein Sockel-zu-Sockel-Interconnect kommunikativ gekoppelt sind, und wobei, wenn die PCIe-Vorrichtung in dem zweiten PCIe-Steckplatz installiert ist, die zweiten Daten von dem IB-HCA an einen zweiten, von dem zweiten Prozessor gehosteten Proxy-Agenten übertragen werden, welcher die zweiten Daten an die PCIe-Vorrichtung weiterleitet.
    • Absatz 20. PCIe-Vorrichtung von einem der Absätze 11–19, wobei die PCIe-Vorrichtung eine Vorrichtung mit zahlreichen integrierten Kernen (MIC) umfasst und der Prozessor zahlreiche integrierte Kerne umfasst.
    • Absatz 21. PCIe-Vorrichtung von einem der Absätze 11–20, wobei die Softwareanweisungen ferner dazu dienen, eine Datenübertragungsschnittstelle zu implementieren, auf die eine Softwareanwendung zugreifen kann, welche die ersten Daten erzeugt und die zweiten Daten empfängt, und die eine OFED(Open Fabrics Enterprise Distribution)-konforme Schnittstelle ist und die Verwendung von IB-Verben unterstützt.
    • Absatz 22. Gegenständlicher, nichtflüchtiger, maschinenlesbarer Datenträger, auf dem Softwareanweisungen gespeichert sind, der dafür ausgelegt ist, dezentral in Komponenten einer Serverplattform mit mehreren Sockeln installiert zu werden, welche einen lokalen Sockel mit einem ersten Host-Prozessor, der mit einem ersten Host-Speicher und einem ersten PCIe-Interconnect gekoppelt ist, und einen entfernten Sockel mit einem zweiten Host-Prozessor, der mit einem zweiten Host-Speicher und einem zweiten PCIe-Interconnect gekoppelt ist, umfasst, wobei die Serverplattform mit mehreren Sockeln weiterhin einen IB-HCA (InfiniBand Host Channel Adaptor) umfasst, der mit dem ersten PCIe-Interconnect gekoppelt ist, wobei der lokale Sockel einen lokalen Sockel umfasst und der entfernte Sockel einen entfernten Sockel umfasst, wobei die Softwareanweisungen umfassen: erste Softwareanweisungen, die dafür ausgelegt sind, auf dem ersten und dem zweiten Host-Prozessor ausgeführt zu werden und die Anweisungen umfassen, um einen Proxy-Agenten jeweils auf dem ersten und dem zweiten Prozessor aufzusetzen; und zweite Softwareanweisungen, die dafür ausgelegt sind, auf jeweiligen PCIe-Karten ausgeführt zu werden, die mit den ersten PCIe-Interconnect bzw. dem zweiten PCIe-Interconnect gekoppelt sind, wobei die ersten Softwareanweisungen und die zweiten Softwareanweisungen dafür ausgelegt sind, Datenübertragungen zu ermöglichen, einschließlich eine erste Datenübertragung erster Daten von einer ersten PCIe-Karte an den IB-HCA, wobei die ersten Daten von der ersten PCIe-Karte an einen ersten Proxy-Agenten übertragen werden und danach von dem ersten Proxy-Agenten an den IB-HCA weitergeleitet werden; und eine zweite Datenübertragung zweiter Daten vom IB-HCA an eine zweite PCIe-Karte, wobei die zweiten Daten von der ersten PCIe-Karte an einen zweiten Proxy-Agenten übertragen werden und danach von dem zweiten Proxy-Agenten an den IB-HCA weitergeleitet werden.
    • Absatz 23. Gegenständlicher, nichtflüchtiger, maschinenlesbarer Datenträger von Absatz 22, wobei die Softwareanweisungen ferner Anweisungen umfassen, um eine SCIF(Symmetric Communications Interface)-Verbindung zwischen der ersten PCIe-Karte und dem ersten Proxy-Agenten zu implementieren.
    • Absatz 24. Gegenständlicher, nichtflüchtiger, maschinenlesbarer Datenträger von Absatz 22 oder 23, wobei die Serverplattform mit mehreren Sockeln eine erste Plattform umfasst, die einen ersten lokalen Sockel mit einem ersten IB-HCA und einen ersten entfernten Sockel umfasst, und wobei die Softwareanweisungen ferner dafür ausgelegt sind, auf einer zweiten Serverplattform mit mehreren Sockeln implementiert zu werden, die eine zweite Plattform umfasst, welche einen zweiten lokalen Sockel mit einem zweiten IB-HCA und einen zweiten entfernten Sockel umfasst, um eine Datenübertragung zwischen einer ersten PCIe-Karte auf der ersten Plattform an eine zweite PCIe-Karte auf der zweiten Plattform über einen Proxy-Datenpfad, um Daten von der ersten PCIe-Karte an den ersten IB-HCA zu übertragen, und einem direkten Datenpfad von dem zweiten IB-HCA zur zweiten PCIe-Karte zu ermöglichen.
    • Absatz 25. Gegenständlicher, nichtflüchtiger, maschinenlesbarer Datenträger von Absatz 24, wobei die erste PCIe-Karte in einen PCIe-Steckplatz im ersten entfernten Sockel der ersten Plattform installiert ist und wobei die zweite PCIe-Karte in einen PCIe-Steckplatz im zweiten lokalen Sockel der zweiten Plattform installiert ist.
    • Absatz 26. Gegenständlicher, nichtflüchtiger, maschinenlesbarer Datenträger von einem der Absätze 22–25, wobei die Serverplattform mit mehreren Sockeln eine erste Plattform umfasst, die einen ersten lokalen Sockel mit einem ersten IB-HCA und einen ersten entfernten Sockel umfasst, und wobei die Softwareanweisungen ferner dafür ausgelegt sind, auf einer zweiten Serverplattform mit mehreren Sockeln implementiert zu werden, die eine zweite Plattform umfasst, welche einen zweiten lokalen Sockel mit einem zweiten IB-HCA und einen zweiten entfernten Sockel umfasst, um eine Datenübertragung zwischen einer ersten PCIe-Karte auf der ersten Plattform an eine zweite PCIe-Karte auf der zweiten Plattform über einen ersten Proxy-Datenpfad, um Daten von der ersten PCIe-Karte an den ersten IB-HCA zu übertragen, und einen zweiten Proxy-Datenpfad zum Übertragen von Daten von dem zweiten IB-HCA an die zweite PCIe-Karte zu ermöglichen.
    • Absatz 27. Gegenständlicher, nichtflüchtiger, maschinenlesbarer Datenträger von Absatz 26, wobei die erste PCIe-Karte in einen PCIe-Steckplatz im ersten entfernten Sockel der ersten Plattform installiert ist und wobei die zweite PCIe-Karte in einen PCIe-Steckplatz im zweiten entfernten Sockel der zweiten Plattform installiert ist.
    • Absatz 28. Gegenständlicher, nichtflüchtiger, maschinenlesbarer Datenträger von Absatz 26, wobei die erste PCIe-Karte in einen PCIe-Steckplatz im ersten entfernten Sockel der ersten Plattform installiert ist und wobei die zweite PCIe-Karte in einen PCIe-Steckplatz im zweiten entfernten Sockel der zweiten Plattform installiert ist.
    • Absatz 29. Gegenständlicher, nichtflüchtiger, maschinenlesbarer Datenträger von einem der Absätze 22–28, wobei die zweiten Softwareanweisungen Anweisungen zum Implementieren einer dualen Übertragungsschnittstelle umfassen, gemäß denen Daten selektiv von einer PCIe-Karte an einen IB-HCA übertragen werden können, die mit einem gemeinsamen PCIe-Interconnect gekoppelt sind, wozu entweder ein Proxy-Datenpfad oder ein direkter Datenpfad, der PCIe-P2P(Peer-to-Peer)-Datenübertragung umfasst, genutzt wird.
    • Absatz 30. Gegenständlicher, nichtflüchtiger, maschinenlesbarer Datenträger von einem der Absätze 22–19, wobei die Softwareanweisungen dafür ausgelegt sind, auf ersten und zweiten Serverplattformen mit mehreren Sockeln installiert zu werden, die jede einen lokalen Sockel mit einem lokalen IB-Adapter und einen entfernten Sockel aufweisen, und wobei die Softwareanweisungen ferner dafür ausgelegt sind, jede der folgenden Übertragungsarten zwischen der auf der ersten und der auf der zweiten Serverplattform mit mehreren Sockeln installierten PCIe-Karte zu ermöglichen: von lokalem Sockel an lokalen Sockel; von lokalem Sockel an entfernten Sockel; von entferntem Sockel an lokalen Sockel; und von entferntem Sockel an entfernten Sockel.
    • Absatz 31. Serverplattform mit mehreren Sockeln, umfassend: einen lokalen Sockel mit einem ersten Host-Prozessor, der mit einem ersten Host-Speicher und einem ersten PCIe(Peripheral Component Interconnect Express)-Interconnect gekoppelt ist und der wenigstens zwei PCIe-Steckplätze im lokalen Sockel aufweist; einen entfernten Sockel mit einem zweiten Host-Prozessor, der mit einem zweiten Host-Speicher und einem zweiten PCIe-Interconnect gekoppelt ist und der wenigstens zwei PCIe-Steckplätze im entfernten Sockel aufweist; ein Sockel-zu-Sockel-Interconnect, das den ersten Host-Prozessor in Kommunikationsverbindung mit dem zweiten Host-Prozessor koppelt; einen IB-HCA (InfiniBand Host Channel Adaptor), der in einen ersten der PCIe-Steckplätze im lokalen Sockel installiert ist; eine erste PCIe-Karte, die in einen zweiten der PCIe-Steckplätze im lokalen Sockel installiert ist; eine zweite PCIe-Karte, die in einen ersten der PCIe-Steckplätze im entfernten Sockel installiert ist; wobei die Serverplattform mit mehreren Sockeln dafür ausgelegt ist, eine Proxy-Übertragung von ersten Daten von der ersten PCIe-Karte an den PCIe IB-HCA über einen vom ersten Host-Prozessor gehosteten ersten Proxy-Agenten durchzuführen; zweite Daten von einem IB-Fabric am PCIe-IB-HCA, die für die erste PCIe-Karte bestimmt sind, zu empfangen; und die zweiten Daten vom PCIe-IB-HCA mittels einer ersten PCIe-P2P(Peer-to-Peer)-Datenübertragung direkt an die erste PCIe-Karte zu übertragen.
    • Absatz 32. Serverplattform mit mehreren Sockeln von Absatz 31, wobei die Serverplattform mit mehreren Sockeln ferner dafür ausgelegt ist, eine Proxy-Übertragung von dritten Daten von der zweiten PCIe-Karte an den PCIe-IB-HCA über einen ersten Proxy-Agenten durchzuführen.
    • Absatz 33. Serverplattform mit mehreren Sockeln von Absatz 31 oder 32, wobei die Serverplattform mit mehreren Sockeln ferner dafür ausgelegt ist: vierte Daten von dem IB-Fabric am PCIe-IB-HCA, die für die zweite PCIe-Karte bestimmt sind, zu empfangen; und die vierten Daten vom PCIe-IB-HCA über einen vom zweiten Prozessor gehosteten zweiten Proxy-Agenten an die zweite PCIe-Karte zu übertragen.
    • Absatz 34. Serverplattform mit mehreren Sockeln von einem der Absätze 31–33, wobei die Serverplattform mit mehreren Sockeln ferner dafür ausgelegt ist: zu bestimmen, ob eine von der ersten PCIe-Karte an den PCIe-IB-HCA zu übertragende Datenmenge einen Schwellwert übersteigt; und falls die zu übertragende Datenmenge den Schwellwert übersteigt, die Daten von der ersten PCIe-Karte über den ersten Proxy-Agenten an den PCIe-IB-HCA weiterzuleiten; oder ansonsten, falls die zu übertragende Datenmenge den Schwellwert nicht übersteigt, die Daten von der ersten PCIe-Karte über eine zweite PCIe-P2P-Übertragung an den PCIe-IB-HCA zu übertragen.
    • Absatz 35. Serverplattform mit mehreren Sockeln von einem der Absätze 31–34, wobei jede der ersten und zweiten PCIe-Karten eine MIC-Karte mit wenigstens einem Prozessor mit zahlreichen integrierten Kernen umfasst.
    • Absatz 36. Serverplattform mit mehreren Sockeln, umfassend: einen lokalen Sockel mit einem ersten Host-Prozessor, der mit einem ersten Host-Speicher und einem ersten PCIe(Peripheral Component Interconnect Express)-Interconnect gekoppelt ist, und einen entfernten Sockel mit einem zweiten Host-Prozessor, der mit einem zweiten Host-Speicher und einem zweiten PCIe-Interconnect gekoppelt ist; ein Sockel-zu-Sockel-Interconnect; einen IB-HCA (InfiniBand Host Channel Adaptor), der mit dem ersten PCIe-Interconnect gekoppelt ist; und eine PCIe-Karte, die mit einem von dem ersten und dem zweiten PCIe-Interconnect gekoppelt ist, einschließlich eines mit dem Speicher gekoppelten Prozessors, wobei die Serverplattform mit mehreren Sockeln ferner Mittel umfasst, um eine erste Sendewarteschlange im Speicher der PCIe-Karte zuzuteilen; erste Daten in die erste Sendewarteschlange einzustellen, wobei die ersten Daten von der Serverplattform mit mehreren Sockeln über den IB-HCA nach extern zu übertragen sind; die ersten Daten aus der ersten Sendewarteschlange an einen ersten Proxy-Agenten zu übertragen, der vom ersten Host-Prozessor gehostet wird, wobei die ersten Daten von dem ersten Proxy-Agenten an den IB-HCA weiterzuleiten sind; und zweite Daten zu empfangen, die von dem IB-HCA gesendet werden, wobei die ersten und zweiten Daten zwischen der PCIe-Karte und dem IB-HCA entlang verschiedener Pfade übertragen werden.
    • Absatz 37. Serverplattform mit mehreren Sockeln von Absatz 36, wobei die zweiten Daten von dem IB-HCA mittels einer direkten PCIe-P2P(Peer-to-Peer)-Datenübertragung empfangen werden.
    • Absatz 38. Serverplattform mit mehreren Sockeln von Absatz 36 oder 37, die ferner Mittel umfasst, um eine Schatten-Sendewarteschlange zuzuteilen; und eine DMA(Direct Memory Access)-Datenübertragung durchzuführen, um die ersten Daten in die Schatten-Sendewarteschlange zu übertragen.
    • Absatz 39. Serverplattform mit mehreren Sockeln von einem der Absätze 36–38, die ferner Mittel umfasst, um die Verbindung zu Software herzustellen, die auf einer außerhalb der Serverplattform mit mehreren Sockeln liegenden Vorrichtung, von wo aus die zweiten Daten gesendet werden, läuft, um eine Schatten-Empfangswarteschlange zuzuteilen; und die zweiten Daten in der Schatten-Empfangswarteschlange zu Puffern, wenn sie vom IB-HCA empfangen werden.
    • Absatz 40. Serverplattform mit mehreren Sockeln von einem der Absätze 36–39, die Mittel umfasst, um eine zweite Sendewarteschlange im Speicher zuzuteilen; dritte Daten in die zweite Sendewarteschlange einzustellen, wobei die dritten Daten von der Serverplattform mit mehreren Sockeln über den IB-HCA nach extern zu übertragen sind; die dritten Daten aus der zweiten Sendewarteschlange mittels einer zweiten direkten PCIe-P2P-Übertragung direkt an den IB-HCA zu übertragen.
    • Absatz 41. Serverplattform mit mehreren Sockeln von Absatz 40, ferner Mittel umfassend, um einen Schwellwert für die Datenübertragung zu implementieren, um zu bestimmen, ob eine Datenübertragung von der PCIe-Vorrichtung an den IB-HCA über einen Proxy-Pfad unter Verwendung eines ersten Proxy-Agenten oder über einen direkten P2P-Pfad weitergeleitet werden soll.
  • Wie vorstehend beschrieben und in den beigefügten Abbildung dargestellt, sind verschiedene Softwarekomponenten auf Host-Prozessoren und MICs installiert, um Datenübertragungen zwischen MICs auf Serverplattformen mit mehreren Sockeln mittels Datenübertragungen lokal-zu-lokal, lokal-zu-entfernt, entfernt-zu-lokal und entfernt-zu-entfernt zu ermöglichen. In einer Ausführungsform ist die Software auf einem gegenständlichen, nichtflüchtigen, maschinenlesbaren Datenträger gespeichert und wird auf wenigstens einen Host-Prozessor der Plattform geladen. Anwendbare Softwarekomponenten werden dann an die MICs verteilt, wobei die Softwarekomponenten auf den Hosts und MICs dafür ausgelegt sind, Proxy- und direkte Datenübertragungen zu ermöglichen, die für die gegebene Übertragung optimiert sind.
  • Daher können Ausführungsformen der vorliegenden Erfindung als Softwareanweisungen oder zur Unterstützung von Softwareanweisungen verwendet werden, die auf einer Form von Verarbeitungskern (etwa einer Host-CPU oder einem Kern eines MIC-Prozessors) oder anderweitig auf oder in einem maschinenlesbaren Datenträger implementiert oder realisiert sind. Ein maschinenlesbarer Datenträger umfasst einen beliebigen gegenständlichen, nichtflüchtigen Mechanismus zum Speichern oder Übertragen von Informationen in einer für eine Maschine (z. B. einen Computer) lesbaren Form. Beispielsweise kann ein maschinenlesbarer Datenträger einen Festwertspeicher (Read Only Memory, ROM), einen Speicher mit wahlfreiem Zugriff (Random Access Memory, RAM), ein Magnetplattenspeichermedium, ein optisches Speichermedium und eine Flash-Speichervorrichtung etc. umfassen.
  • Auch wenn einige Ausführungsformen hier unter Bezugnahme auf bestimmte Implementierungen beschrieben worden sind, sind gemäß manchen Ausführungsformen andere Implementierungen möglich. Darüber hinaus muss eine Anordnung und/oder Abfolge von Elementen oder anderen Merkmalen, die in den Zeichnungen dargestellt und/oder hier beschrieben sind, nicht notwendigerweise in der bestimmten dargestellten und beschriebenen Weise angeordnet werden. Gemäß manchen Ausführungsformen sind zahlreiche andere Anordnungen möglich.
  • Bei jedem in einer Abbildung dargestellten System können die Elemente in einigen Fällen jeweils dieselbe Bezugsnummer oder eine andere Bezugsnummer haben, um anzudeuten, dass die dargestellten Elemente verschieden und/oder ähnlich sein könnten. Allerdings kann ein Element flexibel genug sein, verschiedene Implementierungen aufzuweisen und mit einigen oder allen der hier gezeigten oder beschriebenen Systeme zu funktionieren. Die verschiedenen in den Abbildungen gezeigten Elemente können identisch oder verschieden sein. Dabei ist die Bezeichnung als ein erstes bzw. als ein zweites Element rein willkürlich.
  • In der Beschreibung und in den Patentansprüchen können die Begriffe „gekoppelt” und „verbunden” sowie Ableitungen davon verwendet werden. Es ist zu beachten, dass diese Begriffe nicht als Synonyme beabsichtigt sind. Vielmehr kann in bestimmten Ausführungsformen „verbunden” verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt miteinander stehen. „Gekoppelt” kann bedeuten, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt stehen. Allerdings kann „gekoppelt” auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt zueinander stehen, aber dennoch zusammenwirken oder miteinander interagieren.
  • Eine Ausführungsform ist eine Implementierung oder ein Beispiel der Erfindungen. Wenn in dieser Beschreibung „eine Ausführungsform”, „einige Ausführungsformen” oder „andere Ausführungsformen” erwähnt werden, ist damit gemeint, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Kennzeichen, das/die im Zusammenhang mit den Ausführungsformen beschrieben ist, zumindest bei einigen Ausführungsformen, aber nicht notwendigerweise bei allen Ausführungsformen der Erfindungen vorhanden ist. Die verschiedenen Stellen mit der Formulierung „eine Ausführungsform” oder „einigen Ausführungsformen” beziehen sich nicht notwendigerweise alle auf dieselben Ausführungsformen.
  • Nicht alle Komponenten, Merkmale, Strukturen, Eigenschaften etc., die hier beschrieben und dargestellt werden, müssen in (einer) bestimmten Ausführungsform oder Ausführungsformen vorkommen. Wenn in dieser Beschreibung angegeben ist, dass eine Komponente, ein Merkmal, eine Struktur oder eine Eigenschaft vorhanden sein „kann”, „könnte” oder „möglicherweise” vorhanden ist, muss diese Komponente, dieses Merkmal, diese Struktur oder diese Eigenschaft nicht unbedingt vorhanden sein. Wenn sich die Beschreibung oder ein Anspruch auf „ein” Element bezieht, bedeutet das nicht, dass nur eines der Elemente vorhanden ist. Wenn sich die Beschreibung oder ein Anspruch auf „ein zusätzliches” Element bezieht, schließt das nicht aus, dass mehr als ein zusätzliches Element vorhanden ist.
  • Die vorstehende Beschreibung dargestellter Ausführungsformen der Erfindung einschließlich des Inhalts der Zusammenfassung ist nicht erschöpfend und nicht dazu bestimmt, die Erfindung auf die genauen Formen wie offenbart zu beschränken. Auch wenn zum Zwecke der Veranschaulichung hier spezifische Ausführungsformen der Erfindung und Beispiele für diese beschrieben werden, sind innerhalb des Schutzbereichs der Erfindung diverse gleichwertige Modifikationen möglich, wie für den Fachmann auf diesem Gebiet ersichtlich ist.
  • Diese Modifikationen an der Erfindung können vor dem Hintergrund der vorstehenden ausführlichen Beschreibung realisiert werden. Die in den nachstehenden Patentansprüchen verwendeten Begriffe sollten nicht dahingehend ausgelegt werden, dass sie die Erfindung auf die spezifischen in der Beschreibung und in den Zeichnungen offenbarten Ausführungsformen beschränken. Vielmehr ist der Schutzbereich der Erfindung insgesamt anhand der folgende Patentansprüche zu bestimmen, die gemäß geltenden Grundsätzen der Auslegung von Patentansprüchen zu deuten sind.

Claims (25)

  1. Verfahren zum Übertragen von Daten auf einer Plattform, die eine erste PCIe(Peripheral Component Interconnect Express)-Karte, welche mit einem ersten PCIe-Interconnect gekoppelt ist, und einen PCIe-IB-HCA (InfiniBand Host Channel Adapter), der mit dem ersten PCIe-Interconnect und einem IB-Fabric gekoppelt ist, aufweist, wobei das erste PCIe-Interconnect kommunikativ mit einem ersten Host-Prozessor mit erstem Host-Speicher gekoppelt ist, wobei das Verfahren umfasst: Implementieren eines Proxys zum Übertragen erster Daten von der ersten PCIe an den PCIe-IB-HCA, wobei die ersten Daten von der ersten PCIe-Karte über den IB-HCA an ein Ziel zu senden sind, das über das IB-Fabric erreichbar ist, wobei ein Datenpfad, welcher der Proxy-Übertragung der ersten Daten entspricht, eine erste Datenübertragung von der ersten PCIe-Karte in den ersten Host-Speicher und eine zweite Datenübertragung aus dem ersten Host-Speicher an den IB-HCA umfasst; Empfangen zweiter Daten vom IB-Fabric am PCIe-IB-HCA, die für die erste PCIe-Karte bestimmt sind; und Übertragen der zweiten Daten vom IB-HCA direkt an die erste PCIe-Karte mittels einer ersten PCIe-P2P(Peer-to-Peer)-Datenübertragung.
  2. Verfahren nach Anspruch 1, ferner umfassend das Implementieren einer ersten Schatten-Sendewarteschlange im ersten Host-Speicher und das Implementieren einer zweiten Schatten-Empfangswarteschlange im Speicher der ersten PCIe-Karte, wobei die Schatten-Sendewarteschlange einer Sendehälfte eines ersten Schatten-Warteschlangenpaars entspricht und die zweite Schatten-Empfangswarteschlange einer Empfangshälfte eines zweiten Schatten-Warteschlangenpaars entspricht.
  3. Verfahren nach Anspruch 1 oder 2, ferner umfassend das Übertragen dritter Daten. von der ersten PCIe-Karte an den IB-HCA direkt über eine zweite PCIe-P2P-Übertragung.
  4. Verfahren nach Anspruch 3, ferner umfassend: Implementieren eines Schwellwerts für die Datenübertragung, um zu bestimmen, ob eine Datenübertragung von der ersten PCIe-Karte an den IB-HCA über einen Proxy-Pfad oder über einen direkten P2P-Pfad weitergeleitet werden soll.
  5. Verfahren nach einem der vorstehenden Ansprüche, wobei die erste PCIe-Karte einen Prozessor mit zahlreichen integrierten Kernen (MIC) umfasst.
  6. Verfahren nach einem der vorstehenden Ansprüche, wobei die erste PCIe-Karte und der IB-HCA mit einem ersten PCIe-Interconnect gekoppelt sind, das auf einem lokalen Sockel auf einer Serverplattform mit mehreren Sockeln implementiert ist, wobei das Verfahren ferner umfasst: Implementieren eines Proxys, um dritte Daten von einer zweiten PCIe-Karte, die an ein zweites PCIe-Interconnect angeschlossen ist, welches auf einem entfernten Sockel der Server-Plattform mit mehreren Sockeln implementiert ist, an den IB-HCA zu übertragen.
  7. Verfahren nach Anspruch 6, wobei die Server-Plattform mit mehreren Sockeln in einer NUMA(Non-Uniform Memory Access)-Architektur konfiguriert ist, unter der jeder Sockel einen jeweiligen Host-Prozessor aufweist, der mit dem Host-Speicher gekoppelt ist, und das PCIe-Interconnect kommunikativ mit dem Host-Prozessor gekoppelt ist, wobei das erste PCIe-Interconnect auf einem lokalen Sockel angesiedelt ist, der einen ersten Host-Prozessor und einen ersten Host-Speicher aufweist, wobei das zweite PCIe-Interconnect auf einem entfernten Sockel angesiedelt ist, der einen zweiten Host-Prozessor aufweist, wobei die Server-Plattform mit mehreren Sockeln ferner ein Sockel-zu-Sockel-Interconnect aufweist, das den ersten und den zweiten Host-Prozessor kommunikativ koppelt, und wobei das Implementieren des Proxys zum Übertragen der dritten Daten von der zweiten PCIe-Karte an den IB-HCA umfasst, eine NUMA-DMA(Direct Memory Access)-Übertragung aus dem Speicher auf der zweiten PCIe-Karte in den ersten Host-Speicher durchzuführen.
  8. Verfahren nach einem der vorstehenden Ansprüche, wobei die erste PCIe-Karte und der IB-HCA mit einem ersten PCIe-Interconnect gekoppelt sind, das auf einem lokalen Sockel auf einer Server-Plattform mit mehreren Sockeln implementiert ist, wobei das Verfahren ferner umfasst: Implementieren eines Proxys, um dritte Daten, die vom IB-Fabric auf dem IB-HCA empfangen wurden, vom IB-HCA an eine zweite PCIe-Karte zu übertragen, die an ein zweites PCIe-Interconnect angeschlossen ist, welches auf einem entfernten Sockel der Server-Plattform mit mehreren Sockeln implementiert ist.
  9. Verfahren nach Anspruch 8, wobei die Server-Plattform mit mehreren Sockeln in einer NUMA(Non-Uniform Memory Access)-Architektur konfiguriert ist, unter der jeder Sockel einen jeweiligen Host-Prozessor aufweist, der mit dem Host-Speicher gekoppelt ist, und das PCIe-Interconnect kommunikativ mit dem Host-Prozessor gekoppelt ist, wobei das erste PCIe-Interconnect auf einem lokalen Sockel angesiedelt ist, der einen ersten Host-Prozessor und einen ersten Host-Speicher aufweist, wobei das zweite PCIe-Interconnect auf einem entfernten Sockel angesiedelt ist, der einen zweiten Host-Prozessor aufweist, wobei die Server-Plattform mit mehreren Sockeln ferner ein Sockel-zu-Sockel-Interconnect aufweist, das den ersten und den zweiten Host-Prozessor kommunikativ koppelt, und wobei das Implementieren des Proxys zum Übertragen der dritten Daten vom IB-HCA an die zweite PCIe-Karte umfasst, eine NUMA-DMA(Direct Memory Access)-Übertragung vom IB-HCA in den zweiten Host-Speicher durchzuführen.
  10. Gegenständlicher, nichtflüchtiger, maschinenlesbarer Datenträger, auf dem Software-Anweisungen gespeichert sind, die dafür ausgelegt sind, von wenigstens einem Prozessor ausgeführt zu werden, um das Verfahren nach einem der vorstehenden Ansprüche durchzuführen.
  11. PCIe(Peripheral Component Interconnect Express)-Vorrichtung, die dafür ausgelegt ist, auf einer Server-Plattform mit mehreren Sockeln installiert zu werden, die einen lokalen Sockel mit einem ersten Host-Prozessor, der mit einem ersten Host-Speicher und einem ersten PCIe-Interconnect gekoppelt ist, und einen entfernten Sockel mit einem zweiten Host-Prozessor, der mit einem zweiten Host-Speicher und einem zweiten PCIe-Interconnect gekoppelt ist, aufweist, wobei die Server-Plattform mit mehreren Sockeln weiterhin einen IB-HCA (InfiniBand Host Channel Adaptor) aufweist, der mit dem ersten PCIe-Interconnect gekoppelt ist, wobei die PCIe-Vorrichtung umfasst: einen Prozessor; und Speicher, der mit dem Prozessor gekoppelt ist und in dem Software-Anweisungen gespeichert sind, um Operationen durchzuführen, wenn diese durch einen Prozessor ausgeführt werden, wodurch die Vorrichtung in der Lage ist, eine erste Sendewarteschlange im Speicher zuzuteilen; erste Daten in die erste Sendewarteschlange einzustellen, wobei die ersten Daten von der Server-Plattform mit mehreren Sockeln über den IB-HCA nach extern zu übertragen sind; die ersten Daten aus der ersten Sendewarteschlange an einen vom ersten Host-Prozessor gehosteten ersten Proxy-Agenten zu übertragen, wobei die ersten Daten vom ersten Proxy-Agenten an den IB-HCA weiterzuleiten sind; und zweite Daten zu empfangen, die vom IB-HCA gesendet werden, wobei die ersten und zweiten Daten zwischen der PCIe-Vorrichtung und dem IB-HCA entlang verschiedener Pfade übertragen werden und wobei die PCIe-Vorrichtung dafür ausgelegt ist, jeweils einzeln in jedem von einem ersten PCIe-Steckplatz, der mit dem ersten PCIe-Interconnect gekoppelt ist, und einem zweiten PCIe-Steckplatz, der mit dem zweiten PCIe-Interconnect gekoppelt ist, installiert zu werden.
  12. PCIe-Vorrichtung nach Anspruch 11, wobei die zweiten Daten vom IB-HCA mittels einer direkten PCIe-P2P(Peer-to-Peer)-Datenübertragung empfangen werden.
  13. PCIe-Vorrichtung nach Anspruch 11 oder 12, wobei die Software-Anweisungen ferner dazu dienen: die Verbindung zu Software herzustellen, die auf dem ersten Host-Prozessor läuft, um eine Schatten-Sendewarteschlange zuzuteilen; und eine DMA(Direct Memory Access)-Datenübertragung durchzuführen, um die ersten Daten in die Schatten-Sendewarteschlange zu übertragen.
  14. PCIe-Vorrichtung nach einem der Ansprüche 11–13, wobei die Software-Anweisungen ferner dazu dienen: die Verbindung zu Software herzustellen, die auf einer außerhalb der Server-Plattform mit mehreren Sockeln, von der aus die zweiten Daten gesendet werden, liegenden Vorrichtung läuft, um eine Schatten-Empfangswarteschlange zuzuteilen; und die zweiten Daten in der Schatten-Empfangswarteschlange zu Puffern, wenn sie vom IB-HCA empfangen werden.
  15. PCIe-Vorrichtung nach einem der Ansprüche 11–14, wobei die Software-Anweisungen ferner dazu dienen, eine SCIF(Symmetric Communications Interface)-Verbindung zum ersten Proxy-Agenten herzustellen und die ersten Daten über die SCIF-Verbindung an den ersten Proxy-Agenten zu übertragen.
  16. PCIe-Vorrichtung nach einem der Ansprüche 11–15, wobei die Software-Anweisungen ferner dazu dienen: eine zweite Sendewarteschlange im Speicher zuzuteilen; dritte Daten in die zweite Sendewarteschlange einzustellen, wobei die dritten Daten von der Server-Plattform mit mehreren Sockeln über den IB-HCA nach extern zu übertragen sind; die dritten Daten aus der zweiten Sendewarteschlange mittels einer zweiten direkten PCIe-P2P-Übertragung direkt an den IB-HCA zu übertragen.
  17. PCIe-Vorrichtung nach Anspruch 16, wobei die Software-Anweisungen ferner dazu dienen: einen Schwellwert für die Datenübertragung zu implementieren, um zu bestimmen, ob eine Datenübertragung von der PCIe-Vorrichtung an den IB-HCA über einen Proxy-Pfad unter Verwendung des ersten Proxy-Agenten oder über einen direkten P2P-Pfad weitergeleitet werden soll.
  18. PCIe-Vorrichtung nach einem der Ansprüche 11–17, wobei jeder der lokalen und entfernten Sockel in einer NUMA(Non-Uniform Memory Access)-Architektur konfiguriert ist und der erste und der zweite Prozessor über ein Sockel-zu-Sockel-Interconnect kommunikativ gekoppelt sind, und wobei, wenn die PCIe-Vorrichtung in den zweiten PCIe-Steckplatz installiert ist, die ersten Daten aus der ersten Sendewarteschlange an den ersten Proxy-Agenten mittels einer NUMA-Datenübertragung übertragen werden, die einen Pfad über das Sockel-zu-Sockel-Interconnect umfasst.
  19. PCIe-Vorrichtung nach einem der Ansprüche 11–18, wobei jeder der lokalen und entfernten Sockel in einer NUMA(Non-Uniform Memory Access)-Architektur konfiguriert ist und der erste und der zweite Prozessor über ein Sockel-zu-Sockel-Interconnect kommunikativ gekoppelt sind, und wobei, wenn die PCIe-Vorrichtung im zweiten PCIe-Steckplatz installiert ist, die zweiten Daten vom IB-HCA an einen vom zweiten Prozessor gehosteten zweiten Proxy übertragen werden, welcher die zweiten Daten an die PCIe-Vorrichtung weiterleitet.
  20. PCIe-Vorrichtung nach einem der Ansprüche 11–19, wobei die PCIe-Vorrichtung eine Vorrichtung mit zahlreichen integrierten Kernen (MIC) umfasst und der Prozessor zahlreiche integrierte Kerne umfasst.
  21. PCIe-Vorrichtung nach einem der Ansprüche 11–20, wobei die Software-Anweisungen ferner dazu dienen, eine Datenübertragungsschnittstelle zu implementieren, auf die eine Softwareanwendung zugreifen kann, welche die ersten Daten erzeugt und die zweiten Daten empfängt, und die eine OFED(Open Fabrics Enterprise Distribution)-konforme Schnittstelle ist und die Verwendung von IB-Verben unterstützt.
  22. Server-Plattform mit mehreren Sockeln, umfassend: einen lokalen Sockel mit einem ersten Host-Prozessor, der mit einem ersten Host-Speicher und einem ersten PCIe(Peripheral Component Interconnect Express)-Interconnect gekoppelt ist und der wenigstens zwei PCIe-Steckplätze im lokalen Sockel aufweist; einen entfernten Sockel mit einem zweiten Host-Prozessor, der mit einem zweiten Host-Speicher und einem zweiten PCIe-Interconnect gekoppelt ist und der wenigstens zwei PCIe-Steckplätze im entfernten Sockel aufweist; ein Sockel-zu-Sockel-Interconnect, das den ersten Host-Prozessor kommunikativ mit dem zweiten Host-Prozessor koppelt; einen IB-HCA (InfiniBand Host Channel Adaptor), der in einen ersten der PCIe-Steckplätze im lokalen Sockel installiert ist; eine erste PCIe-Karte, die in einen zweiten der PCIe-Steckplätze im lokalen Sockel installiert ist; eine zweite PCIe-Karte, die in einen ersten der PCIe-Steckplätze im entfernten Sockel installiert ist; wobei die Server-Plattform mit mehreren Sockeln dafür ausgelegt ist, eine Proxy-Übertragung von ersten Daten von der ersten PCIe-Karte an den PCIe IB-HCA über einen vom ersten Host-Prozessor gehosteten ersten Proxy-Agenten durchzuführen; zweite Daten von einem IB-Fabric am PCIe-IB-HCA zu empfangen, die für die erste PCIe-Karte bestimmt sind; und die zweiten Daten vom PCIe-IB-HCA mittels einer ersten PCIe-P2P(Peer-to-Peer)-Datenübertragung direkt an die erste PCIe-Karte zu übertragen.
  23. Server-Plattform mit mehreren Sockeln nach Anspruch 22, wobei die Server-Plattform mit mehreren Sockeln ferner dafür ausgelegt ist, eine Proxy-Übertragung von dritten Daten von der zweiten PCIe-Karte an den PCIe-IB-HCA über den ersten Proxy-Agenten durchzuführen.
  24. Server-Plattform mit mehreren Sockeln nach Anspruch 22 oder 23, wobei die Server-Plattform mit mehreren Sockeln ferner dafür ausgelegt ist: vierte Daten vom IB-Fabric am PCIe-IB-HCA zu empfangen, die für die zweite PCIe-Karte bestimmt sind; und die vierten Daten vom PCIe-IB-HCA über einen vom zweiten Host-Prozessor gehosteten zweiten Proxy-Agenten an die zweite PCIe-Karte zu übertragen.
  25. Server-Plattform mit mehreren Sockeln nach einem der Ansprüche 22–24, wobei die Server-Plattform mit mehreren Sockeln ferner dafür ausgelegt ist: zu bestimmen, ob eine von der ersten PCIe-Karte an den PCIe-IB-HCA zu übertragende Datenmenge einen Schwellwert übersteigt; und falls die zu übertragende Datenmenge den Schwellwert übersteigt, die Daten von der ersten PCIe-Karte über den ersten Proxy-Agenten an den PCIe-IB-HCA weiterzuleiten; oder ansonsten, falls die zu übertragende Datenmenge den Schwellwert nicht übersteigt, die Daten von der ersten PCIe-Karte über eine zweite PCIe-P2P-Datenübertragung an den PCIe-IB-HCA zu übertragen.
DE102015102692.9A 2014-04-30 2015-02-25 Verfahren zum Optimieren von Netzdatenströmen in einem eingeschränkten System Pending DE102015102692A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/266,241 2014-04-30
US14/266,241 US9558148B2 (en) 2014-04-30 2014-04-30 Method to optimize network data flows within a constrained system

Publications (1)

Publication Number Publication Date
DE102015102692A1 true DE102015102692A1 (de) 2015-11-05

Family

ID=54326122

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015102692.9A Pending DE102015102692A1 (de) 2014-04-30 2015-02-25 Verfahren zum Optimieren von Netzdatenströmen in einem eingeschränkten System

Country Status (4)

Country Link
US (1) US9558148B2 (de)
KR (1) KR101713405B1 (de)
CN (1) CN105025070B (de)
DE (1) DE102015102692A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103701710B (zh) * 2013-12-20 2017-01-11 杭州华为数字技术有限公司 一种数据传输方法、核心转发设备以及端点转发设备
US10331595B2 (en) * 2014-10-23 2019-06-25 Mellanox Technologies, Ltd. Collaborative hardware interaction by multiple entities using a shared queue
US9928093B2 (en) * 2015-02-24 2018-03-27 Red Hat Israel, Ltd. Methods and systems for establishing connections associated with virtual machine migrations
US10437747B2 (en) 2015-04-10 2019-10-08 Rambus Inc. Memory appliance couplings and operations
US10891253B2 (en) * 2016-09-08 2021-01-12 Microsoft Technology Licensing, Llc Multicast apparatuses and methods for distributing data to multiple receivers in high-performance computing and cloud-based networks
US11023258B2 (en) * 2016-12-30 2021-06-01 Intel Corporation Self-morphing server platforms
CN107592361B (zh) * 2017-09-20 2020-05-29 郑州云海信息技术有限公司 一种基于双ib网络的数据传输方法、装置、设备
KR101980190B1 (ko) 2017-09-25 2019-05-21 서울대학교산학협력단 입출력 디바이스 제어 장치, 그것의 동작 방법 및 입출력 디바이스 제어 장치 드라이버의 동작 방법
CN111654447B (zh) 2018-01-16 2023-04-18 华为技术有限公司 一种报文传输的方法及装置
CN109417514B (zh) * 2018-03-06 2022-07-22 华为技术有限公司 一种报文发送的方法、装置和存储设备
US10909066B2 (en) * 2018-04-03 2021-02-02 Microsoft Technology Licensing, Llc Virtual RDMA switching for containerized applications
CN111641566B (zh) * 2019-03-01 2021-10-22 华为技术有限公司 数据处理的方法、网卡和服务器
CN112506676B (zh) * 2020-12-02 2024-04-05 深圳市广和通无线股份有限公司 进程间的数据传输方法、计算机设备和存储介质
CN113709066B (zh) * 2021-07-31 2023-04-07 浪潮电子信息产业股份有限公司 一种PCIe通信装置及BMC

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266083B2 (en) * 2003-02-26 2007-09-04 International Business Machines Corporation Method and apparatus for implementing queue pair connection protection over infiniband
US7689679B2 (en) * 2007-02-23 2010-03-30 International Business Machines Corporation Method to enable infiniband network bootstrap
US8732236B2 (en) * 2008-12-05 2014-05-20 Social Communications Company Managing network communications between network nodes and stream transport protocol
CN101286883A (zh) * 2008-05-04 2008-10-15 杭州华三通信技术有限公司 分布式设备中设备板卡的集中调试系统及集中调试方法
US8144582B2 (en) * 2008-12-30 2012-03-27 International Business Machines Corporation Differentiating blade destination and traffic types in a multi-root PCIe environment
JP5869135B2 (ja) * 2011-09-30 2016-02-24 インテル コーポレイション コプロセッサのためのダイレクトi/oアクセス
US9977482B2 (en) * 2011-12-21 2018-05-22 Intel Corporation Method and apparatus for setting an I/O bandwidth-based processor frequency floor
US9189441B2 (en) * 2012-10-19 2015-11-17 Intel Corporation Dual casting PCIE inbound writes to memory and peer devices
EP3008880A4 (de) * 2013-06-13 2017-01-11 TSX Inc. Vorrichtung und verfahren zur ausfallsicherung durch entfernten speicherzugriff mit einer segmentierten warteschlange

Also Published As

Publication number Publication date
CN105025070A (zh) 2015-11-04
CN105025070B (zh) 2018-08-10
KR101713405B1 (ko) 2017-03-22
US9558148B2 (en) 2017-01-31
KR20150125563A (ko) 2015-11-09
US20150317280A1 (en) 2015-11-05

Similar Documents

Publication Publication Date Title
DE102015102692A1 (de) Verfahren zum Optimieren von Netzdatenströmen in einem eingeschränkten System
DE60212626T2 (de) Endknotenunterteilung mittels lokaler identifikatoren
DE102018006546A1 (de) Plattformschnittstellenschicht und protokoll für beschleuniger
DE112013000731B4 (de) Skalierbare virtuelle Geräte-Cloud
DE112013005044B4 (de) Verfahren, einrichtung, vorrichtung und system zum ausführen von eingehenden pcie-schreiboperationen in einen speicher und partnereinrichtungen per dualcast
DE69433293T2 (de) Netzwerkübertragungsverfahren für Systeme mit virtuellem Speicher
DE112005002364T5 (de) Heterogene Prozessoren mit gemeinsamem Cache
DE112008001957B4 (de) Systeme und Verfahren zum Verbessern der Leistungsfähigkeit eines routfähigen Netzwerks
DE102014117462A1 (de) Poolen von Speicherressourcen über mehrere Knoten hinweg
WO2008006622A1 (de) Netzwerksystem und verfahren zur steuerung parallel existierender adressräume
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE112013005090T5 (de) Steuernachrichtenübermittlung in einem mehrfach-Slot-Verbindungsschicht-Flit
DE102013016871A1 (de) Technik zur Steigerung der Effizienz in mehrsträngigen Verarbeitungseinrichtngen
DE102022205478A1 (de) Busübergreifende speicherabbildung
DE102008030587A1 (de) Verfahren und Vorrichtung zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem
DE112007001135T5 (de) Gemeinschaftliche Nutzung von Daten durch Partitionen in einem partitionierbaren System
DE112012004551T5 (de) Mehrkernverknüpfung in einem Netzprozessor
DE102018127751A1 (de) Einheitlicher Adressraum für mehrere Verbindungen
DE112016005933T5 (de) Technologien zum Durchsetzen einer Netzwerkzugriffssteuerung fiir virtuelle Maschinen
DE112013003766T5 (de) Schnelles Entzerren beim Verlassen eines Niedrigenergie-Teilbreite-Hochgeschwindigkeitsverbindungszustands
DE112017004907T5 (de) System, Vorrichtung und Verfahren zur Durchführung einer verteilten Arbitration
DE102018129112A1 (de) Systemdecoder für Trainingsbeschleuniger
DE112017001654T5 (de) Technologien für regionsgerichtete cacheverwaltung
DE112021001408T5 (de) Verwendung kohärent verbundener schnittstellen in einem netzwerkstapelrahmen
DE102015112634A1 (de) Unterstützen von RMA-API über aktive Message

Legal Events

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