DE102022205478A1 - Busübergreifende speicherabbildung - Google Patents

Busübergreifende speicherabbildung Download PDF

Info

Publication number
DE102022205478A1
DE102022205478A1 DE102022205478.4A DE102022205478A DE102022205478A1 DE 102022205478 A1 DE102022205478 A1 DE 102022205478A1 DE 102022205478 A DE102022205478 A DE 102022205478A DE 102022205478 A1 DE102022205478 A1 DE 102022205478A1
Authority
DE
Germany
Prior art keywords
nvme
tcp
host
buffer
operating system
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
DE102022205478.4A
Other languages
English (en)
Inventor
Alex Rosenbaum
Oren Duer
Alexander Mikheev
Nitzan Carmi
Haggai Eran
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.)
Mellanox Technologies Ltd
Original Assignee
Mellanox Technologies Ltd
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 Mellanox Technologies Ltd filed Critical Mellanox Technologies Ltd
Publication of DE102022205478A1 publication Critical patent/DE102022205478A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

Rechnergestütztes System für eine effiziente Interaktion zwischen einem Host, wobei der Host ein erstes Betriebssystem und ein zweites Betriebssystem hat, wobei das System ein Subsystem auf dem zweiten Betriebssystem umfasst, das Daten direkt aus einem Puffer extrahiert, der lokal auf dem Host ist, wobei das System betriebsfähig ist, um Speicher von einem Bus, der dem ersten Betriebssystem zugeordnet ist, auf einem anderen Bus abzubilden, der dem zweiten Betriebssystem zugeordnet ist und von dem aus auf den Speicher zugegriffen wird, um dadurch eine Verbindung zwischen dem ersten und dem zweiten Betriebssystem durch eine busübergreifende Speicherabbildung zu emulieren.

Description

  • GEBIET DER ERFINDUNG
  • Diese Erfindung bezieht sich im Allgemeinen auf Hardware-Speichergeräte und im Besonderen auf vernetzte Hardware-Speichergeräte.
  • HINTERGRUND DER ERFINDUNG
  • Es sind Null-Kopien innerhalb eines einzelnen Betriebssystems bekannt, z. B. durch Verwendung des Linux-TCP-Stapels.
  • PCIe (Peripheral Component Interconnect Express), auch abgekürzt als PCI-e, ist ein Beispiel für einen seriellen Hochgeschwindigkeits-Computererweiterungsbus-Standard, der unter anderem im Wikipedia-Eintrag zu PCI_Express beschrieben wird.
  • Der folgende Artikel: lwn.net/Articles/752188, der online verfügbar ist, beschreibt eine MSG ZEROCOPY-Funktion, die in (Linux Systemkern) 4.14 hinzugefügt wurde und die „Null-Kopie-Übertragung von Daten ermöglicht“, und fügt hinzu, dass „die Implementierung des Null-Kopie-Empfangs ... Paketpuffer in den Benutzerraum-Speicher mappen (bzw. zuordnen) muss“.
  • BlueField® -2 und ConnectX® -6 sind bekannte NVIDIA® Produkte.
  • BlueField® -2 - das sind Cloud-SmartNICs und I/O Processing Unit (IPU)-Lösungen der nächsten Generation, die beispiellose Sicherheit, Leistung und Effizienz für Rechenzentren in großem Maßstab und für jede Arbeitslast bieten. ConnectX® -6 Dx und BlueField® -2 setzen die Innovation von Mellanox im Bereich hochleistungsfähiger Cloud Fabrics fort und machen das Unmögliche möglich, indem sie modernste Hardware-Beschleunigungs-Engines und erstklassige Software-Programmierbarkeit für unternehmenskritische Anwendungen einführen. Sie bieten ein neues Maß an Sicherheit und Effizienz mit dem höchsten Return on Investment (ROI) für Hyperscale-, Unternehmens- und Telekommunikationsumgebungen.
  • ConnectX® -6 Dx SmartNICs bieten bis zu zwei Ports mit 25, 50 oder 100Gb/s oder einen einzelnen Port mit 200Gb/s, Ethernet-Konnektivität mit 50Gb/s PAM4 SerDes-Technologie und PCIe 4.0-Host-Konnektivität. Die ConnectX® -6 Dx Hardware-Offload-Engines umfassen Ipsec und Inline-TLS Data-in-Motion-Kryptografie, erweiterte Netzwerkvirtualisierung, RDMA over Converged Ethernet (RoCE) und NVMe over Fabrics (NVMe-oF) Speicherbeschleunigungen.
  • Die BlueField® -2 IPU integriert alle fortschrittlichen Funktionen von ConnectX® -6 Dx mit einer Reihe von leistungsstarken ARM-Prozessorkernen, Hochleistungsspeicherschnittstellen und flexiblen Verarbeitungsfunktionen in einem einzigen System-on-Chip (SoC).
  • RDMA für Rechenzentren, die auf einer Ethernet- oder Mixed-Protocol-Fabric basieren, wird hier online beschrieben: Mellanox.com/sites/default/files/relateddocs/whitepapers/roce_in_the_data_center.pdf.
  • In Wikipedia heißt es: „In der Informatik ist der direkte Fernzugriff auf den Speicher (Remote Direct Memory Access, RDMA) ein direkter Speicherzugriff vom Speicher eines Computers auf den eines anderen, ohne dass das Betriebssystem des einen oder anderen Computers beteiligt ist. Dies ermöglicht eine Vernetzung mit hohem Durchsatz und geringer Latenz, was besonders in massiv parallelen Computerclustern nützlich ist. RDMA unterstützt die Zero-Copy-Vernetzung, indem es dem Netzwerkadapter ermöglicht, Daten von der Leitung direkt in den Anwendungsspeicher oder vom Anwendungsspeicher direkt auf die Leitung zu übertragen, wodurch das Kopieren von Daten zwischen dem Anwendungsspeicher und den Datenpuffern im Betriebssystem entfällt. Solche Übertragungen erfordern keine Arbeit durch CPUs, Caches oder Kontextwechsel, und die Übertragungen laufen parallel zu anderen Systemoperationen. Dadurch wird die Latenzzeit bei der Nachrichtenübertragung reduziert.“
  • Wikipedia fügt jedoch hinzu, dass „diese Strategie mehrere Probleme mit sich bringt, die damit zusammenhängen, dass der Zielknoten nicht über die Beendigung der Anfrage benachrichtigt wird (einseitige Kommunikation)“.
  • Die Verwendung von Netzwerk-Offloads in Rechenzentren wird u.a. hier beschrieben: Mellanox.com/flles/doc-2020/sb-mellanox-nvme-snap.pdf.
  • Ein „Socket“ umfasst in der Regel einen Endpunkt (in der Regel IP-Adresse und Portnummer) einer zweiseitigen Kommunikationsverbindung zwischen einem ersten und einem zweiten Programm, die im Netz laufen. Der Socket kann an eine Portnummer gebunden sein, die es der TCP-Schicht ermöglicht, die Anwendung zu identifizieren, an die Daten gesendet werden sollen.
  • NVMe/TCP ist ein Beispiel für ein Blockspeicherprotokoll. NVMe ist ein Beispielprotokoll, die Verweise darauf sind jedoch nicht als einschränkend zu verstehen; stattdessen kann generell jedes geeignete lokale oder PCI-Speicherprotokoll verwendet werden.
  • Das Transmission Control Protocol/Internet Protocol (TCP/IP) ist ein Beispiel für ein Netzwerkprotokoll, das von mehreren Computern zur Kommunikation untereinander verwendet werden kann.
  • KURZFASSUNG DER ERFINDUNG
  • Die Erfindung wird durch die Ansprüche definiert. Zur Veranschaulichung der Erfindung werden hier Aspekte und Ausführungsformen beschrieben, die in den Anwendungsbereich der Ansprüche fallen können oder auch nicht.
  • Bestimmte Ausführungsformen zielen darauf ab, die Anzahl der Pufferkopien für die Speicheraufbereitung zu verringern.
  • Bestimmte Ausführungsformen zielen darauf ab, ein einzelnes Gerät (z. B. die ConnectX® -Karte) mit mehreren PCIe-Bussen auszustatten, wobei die Software so konfiguriert ist, dass sie den Speicher von einem PCIe-Bus so abbildet, dass ein anderer PCIe-Bus darauf zugreifen kann, z. B. durch Cross-PCIe-Mapping und/oder Transaktionen. Ein Speicherschlüssel kann zur Beschreibung eines Puffers (Speichers) verwendet werden; der Schlüssel kann so definiert werden, dass er ein PCIe-übergreifendes (GVMI) Mapping darstellt, z. B. wie hier beschrieben. In einer PCIe-NTB-Ausführung (Non-Transparent Bridge) muss jedoch kein Speicherschlüssel bereitgestellt werden. Im Gegensatz dazu überbrückt Legacy-RDMA die PCIe-Grenzen durch ein Paar von HW-Geräten (ConnectX® -Karten oder andere), die eine „RDMA-Verbindung“ definieren. Jedes Gerät kann nur lokale PCIe-Puffer verarbeiten, aber die RDMA-Verbindung kann Puffer zwischen den Geräten übertragen.
  • Bestimmte Ausführungsformen zielen darauf ab, eine busübergreifende Speicherabbildung zu ermöglichen.
  • Ganz allgemein zielen bestimmte Ausführungsformen darauf ab, die IOPS (IO-Operationen pro Sekunde) zu verbessern und/oder die Latenzzeit zu verringern.
  • Ein computergestütztes System für eine effiziente Interaktion zwischen einem Host ist vorgesehen, wobei der Host ein erstes Betriebssystem und ein zweites Betriebssystem hat, wobei das System ein Subsystem auf dem zweiten Betriebssystem umfasst, das Daten direkt aus einem Puffer extrahiert, der lokal auf dem Host ist, wobei das System betriebsfähig ist, um einen Speicher von einem Bus, der dem ersten Betriebssystem zugeordnet ist, auf einem anderen Bus abzubilden, der dem zweiten Betriebssystem zugeordnet ist, und von welchem anderen Bus auf den Speicher zugegriffen wird, um dadurch eine Verbindung zwischen dem ersten und dem zweiten Betriebssystem durch eine busübergreifende Speicherabbildung zu emulieren.Der Anwendungsbereich der Erfindung umfasst unter anderem die folgenden Ausführungsformen:
    • Ausführungsform 1. Ein computergestütztes System für eine effiziente Interaktion zwischen einem Host, wobei der Host ein erstes Betriebssystem und ein zweites Betriebssystem hat, wobei das System umfasst:
      • ein Subsystem, z.B. auf dem zweiten Betriebssystem, das Daten extrahiert, typischerweise direkt aus einem Puffer, der sich auf dem Host befindet, wobei das System betriebsfähig ist, um einen Speicher von einem Bus, der dem ersten Betriebssystem zugeordnet sein kann, auf einen anderen Bus abzubilden, der dem zweiten Betriebssystem zugeordnet sein kann und von dem aus typischerweise auf den Speicher zugegriffen wird, um dadurch eine Verbindung zwischen dem ersten und dem zweiten Betriebssystem zu emulieren, z.B. durch busübergreifende Speicherabbildung.
    • Ausführungsform 2. System gemäß einer der vorangehenden Ausführungsformen, bei dem das erste Betriebssystem eine PCI-artige Konnektivität, einschließlich mehrerer Schichten, mit dem zweiten Betriebssystem aufweist.
    • Ausführungsform 3. System gemäß einer der vorhergehenden Ausführungsformen, wobei das Teilsystem einen Netzwerk-Stapel umfasst.
    • Ausführungsform 4. System gemäß einer der vorhergehenden Ausführungsformen, wobei der Netzwerk-Stapel so konfiguriert ist, dass er einen Puffer außerhalb des eigenen Speichers des zweiten Betriebssystems identifiziert, der es der Software des zweiten Betriebssystems ermöglicht, auf den Puffer des ersten Betriebssystems zuzugreifen.
    • Ausführungsform 5. System gemäß einer der vorangehenden Ausführungsformen, bei dem sich der Puffer, der sich auf dem Host befindet, auf dem Host bleibt.
    • Ausführungsform 6. Ein System nach einer der vorhergehenden Ausführungsformen, wobei das System auch eine Anwendung auf dem Host enthält, die:
      • ein Speichervolumen auf einem emulierten NVMe öffnet, um so eine geöffnete Datei bereitzustellen;
      • einen Speicherblock im lokalen Speicher zuweist und Daten als Puffer B in den Speicherblock schreibt;
      • in die geöffnete Datei schreibt, um dadurch einen Schreibaufruf zu definieren; und einen Systemkern-Treiber, der den Schreibaufruf verarbeitet und eine NVMe-Kapsel mit dem Puffer B vorbereitet, bereitstellt.
    • Ausführungsform 7. System gemäß einer der vorangehenden Ausführungsformen, wobei das System NVMe-Emulationssoftware und einen TCP-Software-Stapel enthält, die zusammenarbeiten, um eine busübergreifende Zuordnung zu ermöglichen, indem sie es einem geräteübergreifenden Speicherschlüssel erlauben, mehrere Softwareschichten zu durchlaufen, damit Software auf dem zweiten Betriebssystem auf den lokalen Host-Puffer des ersten Betriebssystems zugreifen kann.
    • Ausführungsform 8. System gemäß einer der vorhergehenden Ausführungsformen, wobei das erste Betriebssystem auch so konfiguriert ist, dass es Operationen steuert, um dadurch zu ermöglichen, dass der geräteübergreifende Speicherschlüssel die mehreren Softwareschichten durchläuft, wobei die Operationen Folgendes umfassen:
      • Operation 25. der NVMe-Treiber C des Hosts sendet eine Anforderung, die auf den Puffer B zeigt, an ein über die DPU verwaltetes emuliertes NVMe-Gerät D, und das emulierte NVMe-Gerät D stellt dem Host ein NVMe-Gerät (das D emuliert) zur Verfügung;
      • Operation 30. das emulierte NVMe-Gerät D teilt einem Manager E des emulierten NVMe-Geräts D auf einer DPU mit, dass eine NVMe-Anforderung bereit ist, und der Manager E erhält eine Kopie der NVMe-Anforderung im lokalen Speicher des Managers E;
      • Operation 35. Manager E versteht, z. B. durch Zugriff auf die Kopie der NVMe-Anfrage im lokalen Speicher von Manager E, dass die NVMe-Anfrage auf Puffer B verweist, der als Teil des Hostspeichers des Clients einen anderen PCIe-Bus oder eine andere Funktion hat;
      • Operation 40. Manager E startet eine neue Anforderung an einen NVMe-TCP-Initiatortreiber F, der auf dem DPU läuft, mit Attributen zur Ausführung dieser neuen Anforderung, und die neue Anforderung oder deren Attribute umfassen lokale Anforderungsinformationen und den Inhalt des Puffers (B), der entfernt ist;
      • Operation 50. der NVMe-TCP-Initiatortreiber F hält über einen TCP-Benutzerraum-Stapel G auf der DPU einen TCP-Socket mit einem Ziel verbunden;
      • Operation 53. der NVMe-TCP-Initiatortreiber F übergibt die NVMe-TCPformatierten Header der Anforderung im lokalen Speicher der DPU an den VMA-TCP-Benutzerraum-Stapel G, und die Header werden von F über eine BSD-Sende-API an G weitergeleitet;
      • Operation 57. der NVMe-TCP-Initiatortreiber F übergibt den Inhalt des Puffers B an den VMA-TCP-Benutzerraum-Stapel G, und der Inhalt von Puffer B wird über die erweiterte Sende-API von G an G weitergegeben;
      • Operation 60. der TCP-Benutzerraum-Stapel G verwaltet den TCP-Stapel und die HW-Sendewarteschlange, um den DPU-Speicherstromanteil und den Host-Speicherstromanteil ohne Kopieren des Puffers B oder der Speicherstromanteile an den lokalen PCIe-Funktionsbus zu senden;
      • Operation 70. der NVMe-TCP-Initiatortreiber F erhält vom Ziel eine NVMe-TCP-Antwort auf die gesendete NVMe-TCP-Anfrage;
      • Operation 75. als Reaktion darauf gibt der NVMe-TCP-Initiatortreiber F den Puffer B als den entsprechenden TCP-Stream-Teil im TCP-Benutzerraum-Stapel G frei, der mit einem ACK versehen wurde.
    • Ausführungsform 9. System nach einer der vorhergehenden Ausführungsformen, wobei der Speicherschlüssel einen RDMA-Schlüssel umfasst.
    • Ausführungsform 10. System nach einer der vorhergehenden Ausführungsformen, wobei der Speicherschlüssel einen DMA-Schlüssel umfasst.
    • Ausführungsform 11. Verfahren zur effizienten Interaktion zwischen einem Host und einem entfernten Ziel, wobei das Verfahren umfasst:
      • Bereitstellen eines Hosts mit einem ersten Betriebssystem und eines entfernten Ziels mit einem zweiten Betriebssystem, das eine PCI-Typ-Verbindung mit dem ersten Betriebssystem hat; und
      • gemeinsames Nutzen mindestens eines Puffers, der sich auf dem Host befindet, mit dem entfernten Ziel, einschließlich der Bereitstellung eines Null-Kopie-Zugriffs für das Ziel auf den mindestens einen Puffer, um dadurch eine doppelte Null-Kopie über mehrere Betriebssysteme hinweg bereitzustellen.
    • Ausführungsform 12: Verfahren gemäß einer der vorhergehenden Ausführungsformen, bei dem mindestens einer der Hosts und das Ziel eine nichttransparente Brücke (NTB) für die Inter-Domain-Kommunikation über PCIe-Schnittstellen verwenden.
    • Ausführungsform 13: Verfahren gemäß einer der vorhergehenden Ausführungsformen, bei dem eine E/A-(bzw. I/O)-Verarbeitungseinheit (IPU) mit einem Array von ARM-Prozessorkernen zwischen dem Host und dem Netzwerk eingesetzt wird, und bei dem SNAP TCP Storage auf den ARM-Prozessorkernen den PCIe-Zugriff vom Host unter Verwendung mindestens eines XGVMI-Speicherschlüssels auf Null kopiert.
    • Ausführungsform 14. Verfahren nach einer der vorangehenden Ausführungsformen, bei dem ein erster Kopiervorgang vom Host zur IPU und ein zweiter Kopiervorgang vom CPU-Speicher zu einem TCP-Stapel erfolgt.
    • Ausführungsform 15. Verfahren gemäß einer der vorhergehenden Ausführungsformen, wobei das Verfahren die folgenden Operationen umfasst, um dadurch IPOS zu erhöhen und/oder die Latenzzeit zu verringern und/oder die CPU-Auslastung zu verringern, indem die Kopien des Speicherbereitstellungspuffers reduziert werden:
      • Operation 10. eine Anwendung auf einem Client-Host bereitet einen entfernten Datenpuffer B im lokalen Speicher des Hosts vor;
      • Operation 15. die Host-Anwendung fordert einen NVMe-Treiber C auf dem Client-Host auf, einen entfernten Puffer B in ein Speichervolumen zu schreiben;
      • Operation 20. der NVMe-Treiber C auf dem Client-Host bereitet eine NVMe-Anforderung vor, die auf den Puffer B verweist;
      • Operation 25. der NVMe-Treiber C des Hosts sendet die Anforderung, die auf den Puffer B zeigt, an ein über die DPU verwaltetes emuliertes NVMe-Gerät D, und das emulierte NVMe-Gerät D stellt dem Client-Host ein NVMe-Gerät zur Verfügung, das das emulierte NVMe-Gerät D emuliert;
      • Operation 30. das emulierte NVMe-Gerät D teilt einem Manager E des emulierten NVMe-Geräts D auf einer DPU mit, dass eine NVMe-Anfrage bereit ist, und Manager E erhält eine Kopie der NVMe-Anfrage im lokalen Speicher von Manager E;
      • Operation 35. Manager E versteht, dass die NVMe-Anfrage auf Puffer B verweist, der Teil des Client-Host-Speichers ist und daher einen anderen PCIe-Bus oder eine andere Funktion hat;
      • Operation 40. Manager E startet eine neue Anforderung auf einem NVMe-TCP-Initiatortreiber F, der auf der DPU läuft, mit Attributen zur Ausführung dieser neuen Anforderung, und die neue Anforderung oder ihre Attribute umfassen lokale Anforderungsinformationen und den Inhalt des entfernten Datenpuffers B;
      • Operation 50. NVMe-TCP-Initiatortreiber F hält über einen VMA-TCP-Benutzerraum-Stapel G auf der DPU einen TCP-Socket mit einem Ziel verbunden;
      • Operation 53. der NVMe-TCP-Initiatortreiber F übergibt die NVMe-TCPformatierten Header der Anforderung im lokalen Speicher der DPU an den VMA-TCP-Benutzerraum-Stapel G, und die Header können vom NVMe-TCP-Initiatortreiber F über eine BSD send()-API an den VMA-TCP-Benutzerraum-Stapel G übergeben werden;
      • Operation 57. der NVMe-TCP-Initiatortreiber F übergibt den Inhalt von Puffer B an den VMA-TCP-Benutzerraum-Stapel G, und der Inhalt von Puffer B wird über die erweiterte Sende-API vom NVMe-TCP-Initiatortreiber F an den VMA-TCP-Benutzerraum-Stapel G übergeben;
      • Operation 60. der TCP-Benutzerraum-Stapel G verwaltet den TCP-Stapel und die HW-Sendewarteschlange, um den DPU-Speicherstromanteil und den Host-Speicherstromanteil ohne Kopieren des Puffers B oder der Speicherstromanteile an einen lokalen PCIe-Funktionsbus zu senden;
      • Operation 70. der NVMe-TCP-Initiatortreiber F erhält eine NVMe-TCP-Antwort vom Ziel über die gesendete NVMe-TCP-Anfrage; und
      • Operation 75. als Reaktion darauf gibt der NVMe-TCP-Initiatortreiber F den Puffer B frei, da der betreffende TCP-Stream-Teil im VMA-TCP-Benutzerraum-Stapel G mit ACK bestätigt wurde.
    • Ausführungsform 16: Verfahren gemäß einer der vorhergehenden Ausführungsformen, bei dem die IPU einen VMA umfasst und bei dem der Netzwerk-Stapel einen Puffer, der Daten speichert, die über das Netzwerk zu senden sind, unter Verwendung eines Speicherschlüssels zusätzlich zu einem Zeiger identifiziert.
    • Ausführungsform 17. Verfahren nach einer der vorhergehenden Ausführungsformen, bei dem der Netzwerk-Stapel die über das Netzwerk zu sendenden Daten direkt aus dem Puffer auf dem Host extrahiert, der sich in einer anderen PCIe-Domäne befindet.
    • Ausführungsform 18: Verfahren gemäß einer der vorangehenden Ausführungsformen, bei dem das entfernte Ziel über ein Netzwerk mit dem Host verbunden ist, von dem der Host nichts weiß.
    • Ausführungsform 19. System gemäß einer der vorangehenden Ausführungsformen, bei dem eine NTB (Non-Transparent Bridge) verwendet wird, um Software auf dem zweiten Betriebssystem den Zugriff auf den lokalen Host-Puffer des ersten Betriebssystems zu ermöglichen.
    • Ausführungsform 20. System nach einer der vorhergehenden Ausführungsformen, wobei die NTB (Non-Transparent Bridge) von einem VMA auf dem zweiten Betriebssystem verwendet wird.
    • Ausführungsform 21. System gemäß einer der vorhergehenden Ausführungsformen, bei dem der Netzwerk-Stapel so konfiguriert ist, dass er den Puffer unter Verwendung eines Speicherschlüssels und nicht eines Zeigers identifiziert.
    • Ausführungsform 22. System gemäß einer der vorhergehenden Ausführungsformen, bei dem ein NVMe-TCP-Initiatortreiber den Inhalt des Puffers an einen TCP-Benutzerraum-Stapel im Netzwerk-Stapel weitergibt.
    • Ausführungsform 23. System gemäß einer der vorhergehenden Ausführungsformen, wobei das zweite Betriebssystem mehrere ARM-CPUs enthält.
    • Ausführungsform 24. System gemäß einer der vorangegangenen Ausführungsformen, bei dem ARM-basierte NVMe-TCP-Emulationssoftware den Puffer an einen TCP-Socket im VMA weiterleitet.
    • Ausführungsform 25. System gemäß einer der vorhergehenden Ausführungsformen, wobei das zweite Betriebssystem die über das Netz zu sendenden Daten direkt aus einem Puffer auf dem Host extrahiert, der sich in einer anderen PCIe-Domäne befindet.
    • Ausführungsform 26. System nach einer der vorhergehenden Ausführungsformen, wobei der Netzwerk-Stapel einen VMA umfasst.
  • Jedes Merkmal eines Aspekts oder einer Ausführungsform kann auf andere Aspekte oder Ausführungsformen angewandt werden, und zwar in jeder geeigneten Kombination. Insbesondere kann jedes Merkmal eines Verfahrensaspekts oder einer Ausführungsform auf einen Geräteaspekt oder eine Ausführungsform angewandt werden und umgekehrt.
  • Aspekte und Ausführungsformen der Offenbarung werden nun rein beispielhaft unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
  • Figurenliste
    • 1 ist eine vereinfachte Blockdiagrammdarstellung eines Systems zur busübergreifenden Speicherabbildung gemäß einer Ausführungsform der Erfindung.
    • Die 2 - 5 sind Tabellen, die zur Erstellung von Speicherschlüsseln verwendet werden können.
  • DETAILLIERTE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Der hier verwendete Begriff „Speicherschlüssel“ (Mkey) soll einen Kontext mit einem Zeiger und zusätzlichen Attributen, z. B. des Zeigers, umfassen, die mindestens eines der folgenden Merkmale beschreiben: wie auf den Speicherzeiger zugegriffen werden kann (z. B. Lesen, Schreiben, atomar, alle), welche Entität oder Entitäten auf den Zeiger zugreifen können (z. B. Schutzschlüssel), welche Übersetzungen vorgenommen werden müssen, um eine virtuelle auf eine physische Figur zu ermöglichen, und GVMI-übergreifende Informationen, z. B. wie hier beschrieben.
  • Es ist bekannt, dass Zeiger in der Computerprogrammierung bekannt sind, wie z. B. im Wikipedia-Eintrag über „Pointer_(computer_programming)“ beschrieben, und CPUs (und andere Peripheriegeräte) können Daten verarbeiten, wenn sie sich in Registern befinden oder durch einen Zeiger im Speicherbereich darauf hingewiesen wird. Speicherschlüssel werden z.B. in Mellanox.com/related-docs/prod_software/Mellanox_OFED_Linux_User_Manual_ v4_3.pdf beschrieben.
  • Mkeys und deren Erstellung sind z.B. in Mellanox.com/relateddocs/user_manuals/Ethernet_Adapters_Programming_Manual.pdf beschrieben. Der dort beschriebene Befehl CREATE_MKEY erzeugt z.B. neue Mkeys. Der Kontext des neuen Mkey-Objekts kann aus einer Eingabe-Mailbox entnommen werden. Normalerweise liefert die Hardware einen Mkey-Index als Ausgabeparameter. Dieser Index kann von der Software als Öffner beim Zugriff auf dieses Objekt verwendet werden.
  • VHCA ist ein Virtual Host Channel Adapter. VHCAs und VHCA-IDs werden unter anderem im US-Patent US9397960B2 beschrieben, dessen Offenlegung hiermit durch Verweis einbezogen wird. Virtuelle Host-Kanal-Adapter mit mehreren Kontexten und einer einzigen Logik werden in diesem Cisco-Patent beschrieben: https://patents.google.com/patent/ US20080123672 , dessen Offenlegung hiermit durch Bezugnahme aufgenommen wird. Es ist bekannt, dass mehrere virtuelle Funktionen (VFs) vorhanden sind, von denen sich jede einem Host als unabhängige VHCA präsentiert, während nur ein einziger HCA vom Netzwerk beobachtet werden kann, das die VHCAs nicht kennt. Methoden zur gemeinsamen Nutzung desselben physischen Ports durch mehrere VHCAs sind bekannt und werden zum Beispiel in download.lenovo.com/servers/mig/2020/05/28/21936/ mlnx-lnvgy_dd_nic_cx.ib-5.0-2.1.8.0-0_rhel7_x86-64.pdf auf Seite 284 beschrieben.
  • Der Begriff „GVMI“ alias Guest Virtual Machine Identifier (GVMI) bezeichnet in der Regel eine Hardwarestruktur; der GVMI ist in der Regel der Name eines Gastbetriebssystems für eine virtuelle Maschine. Ein Beispiel für einen GVMI ist eine vhca_id alias „VHCA ID“ oder VHCA-Kennung.
  • Der Begriff „Cross-GVMI-Mkey“ bezieht sich auf eine Hardwarestruktur, die z. B. in Connect® X6Dx existiert und unter folgendem www-Link beschrieben wird: nvidia.com/enus/networking/ethernetlMellano-6-dx. Die Begriffe XGVMI, Cross-GVMI und Cross-Domain-GVMI werden hier allgemein austauschbar verwendet. Es ist bekannt, dass Netzwerkadapter, wie der Connect® X6Dx, über HW-Teile verfügen, die einen Cross-GVMI-Mkey unterstützen und in Verbindung mit der auf den internen Kernen laufenden Firmware arbeiten. Diese Firmware verfügt in der Regel über eine geschützte Befehlsschnittstelle, die im Programmer's Reference Manual (PRM) dokumentiert ist, das hier verfügbar ist: Mellanox.com/related-docs/user_manuals/Ethernet_Adapters_Programming_Manual.pdf.
  • Es wird jedoch geschätzt, dass jeder geeignete Ethernet-Netzwerkadapter-Treiber verwendet werden kann, der einen Cross-GVMI-Mkey wie beschrieben unterstützt. Der Code dieser Firmware kann einen Befehl nehmen und diesen Befehl in HW-Konfigurationen abbilden. Dies ist nur eine Beispielimplementierung, die Flexibilität in Bezug auf die Beibehaltung des Befehls bietet, auch wenn eine neue Hardwareversion herauskommt. In Geräte-APIs, die von der oben genannten Firmware implementiert werden, kann dies wie folgt dargestellt werden: „CREATE_MKEY mit access_mode = 0x6: CROSSING_VHCA_MKEY“
  • 1 zeigt ein System zur busübergreifenden Speicherabbildung, das typischerweise die NVMe-Speicheremulation über NVMe-TCP-Beschleunigung gemäß einer Ausführungsform der Erfindung erleichtert. Das System von 1 umfasst typischerweise alle oder eine geeignete Teilmenge der folgenden Komponenten:
    • eine Client-Anwendung, auch bekannt als „Performance-Anwendung“ oder Perf, auf einem Host, auch bekannt als Client-Host. Es versteht sich von selbst, dass Software, die sich auf dem Host-Betriebssystem in 1 befindet, typischerweise die im Folgenden beschriebenen Vorgänge 10-75 steuert;
    • eine DPU (z. B. BlueField® )
    • einen NVMe-Treiber auf dem Client-Host (auch bekannt als der NVMe-Treiber C des Hosts);
    • NVMe-TCP-Initiatortreiber F, der auf dem DPU läuft;
    • VMA TCP Benutzerraum-Stapel, G, auf der DPU;
    • eine VHCA;
    • GVMIs A und B, die in der Regel in Hardware implementiert sind, von denen eine oder beide durch VHCAs ersetzt werden können; GVMI A ist in der Regel als Netzwerkgerät definiert. GVMI B umfasst in der Regel ein emuliertes NVMe-Gerät (z. B. PCIe), das dem Client-Host ein NVMe-Gerät zur Verfügung stellt und über die DPU verwaltet wird;
    • Software auf dem zweiten Betriebssystem (z. B. BlueField® ), um auf den lokalen Puffer des Hosts vom ersten Betriebssystem zuzugreifen;
    • TCP-Socket im VMA; und
    • NVMe-TCP-Emulationssoftware, die einen Puffer B an den VMA-TCP-Socket übergibt, der auf oder als SNAP® implementiert werden kann.
  • Ein Cross-GVMI-Speicherschlüssel, auch Cross-GVMI-Mkey genannt, ist so konfiguriert, dass er einen Puffer von einem GVMI, z.B. GVMI A, nimmt und denselben Puffer auf der anderen Seite mit dem zweiten GVMI, z.B. GVMI B, verwendet.
  • Eine DPU ist ein mögliches Beispiel für einen Datenprozessor, typischerweise ein System auf einem Chip, auch SoC genannt, das in der Regel Folgendes umfasst:
    • eine softwareprogrammierbare Mehrkern-CPU, die eine ARM-Architektur aufweisen kann und in der Regel mit anderen SoC-Komponenten gekoppelt ist, und/oder
    • eine Hochleistungsnetzschnittstelle zum Parsen, Verarbeiten und Übertragen von Daten, z. B. an GPUs und/oder CPUs, mit der Geschwindigkeit des übrigen Netzes (auch Leitungsrate genannt); und/oder
    • programmierbare Beschleunigungs-Engines, die Anwendungen beispielsweise für KI und/oder maschinelles Lernen und/oder Sicherheit und/oder Telekommunikation und/oder Speicherung entlasten und dadurch deren Leistung verbessern.
  • Es wird geschätzt, dass bestimmte Ausführungsformen hierin vorteilhaft sind in der Verringerung der Latenz und der CPU-Nutzung, die durch den Kopier-Overhead der NVMe-Nutzlast vom Host-Speicher (z. B. X86) zu einer TCP-Paket-Nutzlast entstehen, die von der NVMe-Emulationssoftware der DPU-CPU-Kerne verwaltet wird (z. B. SNAP® ).
  • In der Regel konfiguriert die NVMe-Emulationssoftware (z. B. SNAP®) die Hardware der Netzwerkschnittstellenkarte (NIC) so, dass sie mindestens ein NVMe-TCP-Paket sendet, so dass der TCP-Header aus dem lokalen DPU-Speicher abgerufen wird, während die TCP-Nutzlast direkt aus dem Host-Speicher (X86) auf einem entfernten PCIe-Bus abgerufen wird. Auf diese Weise werden bis zu zwei Kopier- und Bereitstellungspuffer vermieden oder übersprungen.
  • Ein besonderer Vorteil bestimmter Ausführungsformen besteht darin, dass die Hardware der Netzwerkschnittstellenkarte (NIC) in der Regel ein einzelnes Paket aus mehreren Speicheradressen sammelt, die über mehrere PCIe-Busse verteilt sind. Software wird verwendet, um diese Speicheradressen von ihren jeweiligen PCIe-Bussen zu übersetzen und/oder abzubilden und/oder zu verwalten, und die Hardware wird entsprechend konfiguriert, um solche Pakete zu senden.
  • Die BlueField® -2 I/O Processing Unit (IPU) ist ein System-on-Chip (SoC), das eine SmartNIC, z. B. ConnectX® -6 Dx, eine Reihe von ARM-Prozessorkernen, Hochleistungsspeicherschnittstellen und flexible Verarbeitungsfunktionen umfasst. Der SmartNIC kann Hardware-Offload-Engines mit IPsec- und Inline-TLS-Data-in-Motion-Kryptografie und/oder Netzwerkvirtualisierung und/oder RDMA over Converged Ethernet (RoCE) und/oder NVMe over Fabrics (NVMe-oF)-Speicherbeschleunigungen enthalten, wie z. B. online beschrieben in: mellanox.com/news/press_release/mellanox-introducesrevolutionary-connectx-6-dx-and-bluefield-2-secure-cloud-smartnics-and-io. Ein ARM-Prozessor ist eine CPU, die auf der RISC-Architektur (RISC = Reduced Instruction Set Computer) von Advanced RISC Machines (ARM) basiert, z. B. wie online beschrieben in: whatis.techtarget.com/definition/ARMprocessor#:~:text=An%20ARM%20processor%20is%20one,bit%20RISC%20multi%2Dcore %20processors.
  • Das System aus 1 kann in Verbindung mit bekannten Technologien wie SNAP® und/oder VMA und/oder TCP-Sockets und/oder libibverbs und/oder BlueField® verwendet werden, wobei diese nicht als Einschränkung zu verstehen sind. Das zweite Betriebssystem in 1 kann beispielsweise mehrere ARM-CPUs, wie hier beschrieben, oder eine Reihe von ARM-Prozessorkernen (wie eine NVIDIA® BlueField® IPU alias BlueField® (ARM)) enthalten, oder es kann alternativ überhaupt nicht ARM-basiert sein und stattdessen beispielsweise X86 oder eine andere geeignete CPU-Architektur verwenden. Mellanox NVMe SNAP® (Software-defined Network Accelerated Processing) ist ein Beispiel für ein Framework oder eine Technologie, die eine hardwarebeschleunigte Virtualisierung von NVMe-Speicher ermöglicht, z. B. durch Emulation eines Blockspeichergeräts auf einem Host. So kann beispielsweise ein NVMe-Laufwerk auf einem PCIe-Bus emuliert werden, wodurch der Netzwerkspeicher wie eine lokale NVMe-SSD aussieht. Ein Host-Betriebssystem/Hypervisor kann seinen Standard-NVMe-Treiber verwenden, der nicht weiß, dass die Kommunikation durch den NVMe SNAP® und nicht durch ein physisches Laufwerk beendet wird. Die Logik kann dann über den NVMe SNAP® auf die Daten angewendet und über das Netzwerk an ein Speicherziel übertragen werden, z. B. über ein Ethernet- oder InfiniBand-Protokoll. Alternativ kann jede andere geeignete Technologie eingesetzt werden, die eine Hardware-Speicher-Virtualisierung implementiert und/oder eine Optimierung der Speicherressourcen im Hinblick auf CAPEX- und OPEX-Einsparungen ermöglicht und/oder so konfiguriert ist, dass CPU-Ressourcen des Computerknotens durch Auslagerung sowohl der Netzwerk- als auch der Speicherdatenpfade freigesetzt werden, und vorzugsweise die Integration in eine beliebige, auf einem beliebigen Netzwerkprotokoll basierende Speicherlösung ermöglicht.
  • In Bezug auf [copy #2] wird geschätzt, dass dieser Online-Link: Systemkern.org/doc/html/v4.15/networking/msg _zerocopy.html eine Linux-Socket-Definition der Zerocopy-Flags bietet. Die TCP-Stapel-Implementierung (VMA) kann Unterstützung für Sendungen mit MSG_ ZEROCOPY-Flag hinzufügen. Die Implementierung des send()-Aufrufs mit dem MSG_ZEROCOPY-Flag kann den Anwendungspufferzeiger als Referenz verwenden, ohne ihn in einen Zwischenpuffer zu kopieren. Der TCP-Stapel kann den Referenzpufferzeiger für das Senden des TCP-Pakets verwalten und darf den Verweis auf den Puffer erst freigeben, wenn ein TCP ACK empfangen wurde, das die gesamte Sendepuffergröße abdeckt. Der Eigentümer des TCP-Sockets (SPDK-Initiator) kann send() bzw. ein Senden mit MSG_ZEROCOPY aufrufen, wenn dies von der Implementierung des TCP-Stapels (VMA) unterstützt wird. Die Implementierung des Aufrufers von send() mit MSG_ZEROCOPY kann den gesendeten Puffer beiseite legen, bis ein Hinweis darauf eingeht, dass der TCP-Stapel den Sendevorgang abgeschlossen und eine Bestätigung erhalten hat.
  • Zu [Kopie #1], die eine Null-Kopie bzw. Zerocopy SNAP® (z. B. Host -> BlueField®) umfassen kann, kann eine API zum TCP-Stapel (z. B. VMA) hinzugefügt werden, um den Cross-GVMI-Mkey bereitzustellen, so dass VMA später eine markierte physikalische Adresse (auch bekannt als „PA“) als Host-Speicher erkennen und diesen domänenübergreifenden GMVI-Speicherschlüssel für die in HW gesammelte PCIe verwenden kann. SNAP® , das den Cross-GVMI-Mkey vorbereitet, kann den Cross-GVMI-Mkey bei der TCP-Socket-Initialisierung an VMA weitergeben. Die Signalisierung des TCP-Puffers als „externer Host-Speicher“, für die der Cross-GVMI-Mkey zwischen SNAP® und (z. B.) VMA benötigt wird, kann durch geeignete Markierung des externen Host-Puffer-Zeigers erfolgen. Zum Beispiel kann das MSB der physikalischen Adresse entsprechend gesetzt werden. Es kann eine Logik in (beispielsweise) VMA hinzugefügt werden, um den markierten PA als externen Host-Speicherpuffer zu erkennen, und kann den Kreuz-GVMI-VMA verwenden, um den Mkey) an die Hardware mit Datenpuffer SGE auf Roh-QP (SQ/TIS) mit dem Kreuz-GVMI-Mkey zu setzen.
  • Der Einfachheit halber bezieht sich diese Spezifikation beispielhaft auf SNAP™ . Solche Verweise sollen jedoch nicht einschränkend sein, und generell kann jeder Speichergeräteemulator (z. B. ein smartNIC-Dienst) verwendet werden, der ein NVMe- (oder virtio-blk-) Speicher-PCIe-Gerät für den Host emuliert, indem er eine Speicher-PCIe-Geräteschnittstelle für einen Host freigibt (oder den Zugriff des Hosts auf das Speicher-PCIe-Gerät ermöglicht).
  • Das folgende Verfahren ist entweder allein oder in Verbindung mit dem System von 1 oder allgemeiner mit allen oder einer beliebigen Teilmenge der folgenden Verfahren vorgesehen:
    1. A. eine Anwendung auf einem Client-Host (auch bekannt als Host-Anwendung A)
    2. B. einen Datenpuffer im Speicher des Client-Hosts (auch Puffer B genannt)
    3. C. einen NVMe-Treiber auf dem Client-Host (auch bekannt als NVMe-Treiber C des Hosts)
    4. D. ein emuliertes NVMe-Gerät (stellt das NVMe-Gerät dem Client-Host zur Verfügung und wird über die DPU verwaltet)
    5. E. NVMe-emulierter Gerätemanager auf DPU, z. B. SNAP®
    6. F. NVMe-TCP-Initiatortreiber F, der z. B. auf der DPU läuft
    7. G. einen VMA (beispielsweise) TCP Benutzerraum-Stapel, G, der sich auf der DPU befinden kann.
  • Das Verfahren umfasst in der Regel alle oder eine beliebige Teilmenge der folgenden Vorgänge in geeigneter Reihenfolge, z. B. wie folgt:
    • Operation 10. eine Anwendung auf einem Client-Host bereitet einen entfernten Datenpuffer B im lokalen Speicher des Hosts vor;
    • Operation 15. die Host-Anwendung fordert einen NVMe-Treiber C auf dem Client-Host auf, einen entfernten Puffer B in ein Speichervolumen zu schreiben;
    • Operation 20. der NVMe-Treiber C des Hosts bereitet eine NVMe-Anforderung vor, die auf den Puffer B verweist;
    • Operation 25. der NVMe-Treiber C des Hosts sendet die auf den Puffer B zeigende Anforderung an ein über die DPU verwaltetes emuliertes NVMe-Gerät D, und das emulierte NVMe-Gerät D stellt dem Client-Host ein NVMe-Gerät zur Verfügung, das das emulierte NVMe-Gerät D emuliert;
    • Operation 30. das emulierte NVMe-Gerät D teilt einem Manager E des emulierten NVMe-Geräts D auf einer DPU mit, dass eine NVMe-Anforderung bereit ist, und Manager E erhält eine Kopie der NVMe-Anforderung im lokalen Speicher von Manager E;
    • Operation 35. Manager E versteht, z. B. durch Zugriff auf die Kopie der NVMe-Anfrage im lokalen Speicher von Manager E, dass die NVMe-Anfrage auf Puffer B verweist, der Teil des Hostspeichers des Clients ist und daher einen anderen PCIe-Bus oder eine andere Funktion hat;
    • Operation 40. Manager E startet eine neue Anforderung an einen NVMe-TCP-Initiatortreiber F, der auf der DPU läuft, mit Attributen zur Ausführung dieser neuen Anforderung, und die neue Anforderung oder ihre Attribute umfassen lokale Anforderungsinformationen und den Inhalt des Ferndatenpuffers B;
    • Operation 50. der NVMe-TCP-Initiatortreiber F hält über einen VMA-TCP-Benutzerraum-Stapel G auf der DPU einen TCP-Socket mit einem Ziel verbunden;
    • Operation 53. der NVMe-TCP-Initiatortreiber F übergibt die NVMe-TCPformatierten Header der Anforderung im lokalen Speicher der DPU an den VMA-TCP-Benutzerspace-Stapel G, und die Header können vom NVMe-TCP-Initiatortreiber F über eine BSD send()-API an den VMA-TCP-Benutzerspace-Stapel G übergeben werden;
    • Operation 57. der NVMe-TCP-Initiatortreiber F übergibt den Inhalt des Puffers B an den VMA-TCP-Benutzerraum-Stapel G. Der Inhalt des Puffers B kann vom NVMe-TCP-Initiatortreiber F über die erweiterte Sende-API an den VMA-TCP-Benutzerraum-Stapel G übergeben werden; dadurch wird der VMA in die Lage versetzt, den Puffer zu identifizieren, indem er einen Speicherschlüssel anstelle eines Zeigers verwendet.
    • Operation 60. der VMA-TCP-Benutzerraum-Stapel G verwaltet den TCP-Stapel und die HW-Sendewarteschlange, um den DPU-Speicherstromanteil und den Host-Speicherstromanteil ohne Kopieren des Puffers B oder der Speicherstromanteile an einen lokalen PCIe-Funktionsbus zu senden;
    • Operation 70. der NVMe-TCP-Initiatortreiber F erhält eine NVMe-TCP-Antwort vom Ziel über die gesendete NVMe-TCP-Anfrage; und
    • Operation 75. als Reaktion darauf, gibt der NVMe-TCP-Initiatortreiber F den Puffer B als den entsprechenden TCP-Stream-Teil im VMA-TCP-Benutzerraum-Stapel G frei, der mit einem ACK versehen wurde.
  • Im Vergleich zu den hier nur beispielhaft beschriebenen Ausführungsformen sind viele Varianten möglich. Um nur ein paar Beispiele zu nennen:
    • Das hier beschriebene System und die Methoden können in jedes geeignete System wie z. B. SNAP, NVIDIA Mellanox Rivermax® oder VMA integriert werden. Es ist jedoch klar, dass die Verwendung von VMA nur eine mögliche Ausführungsform ist. VMA ist eine mögliche TCP/IP-Stapel-Lösung, aber alternativ kann bei einer Nicht-VMA-Lösung ein TCP/IP-Stapel bereitgestellt werden, der z. B. wie hier beschrieben modifiziert wird, um den Cross-GVMI-Mkey zu handhaben. Es wird davon ausgegangen, dass VMA (oder Mellanox Messaging Accelerator) ein Beispiel für einen Netzwerk-Stapel ist; andere Beispiele umfassen, sind aber nicht beschränkt auf Linux TCP Stapel, mTCP, Seastar und andere Netzwerk-Stapels, die online beschrieben sind, z. B. auf der DPDK-Ökosystemseite, die online unter dem folgenden Link verfügbar ist: dpdk.org/ecosystem/.
  • Außerdem ist diese Erfindung nicht spezifisch für PCI-Anschlüsse (z. B. speziell für PCI- oder PCIe-Anschlüsse) und kann auf andere Busse als PCI und PCIe erweitert werden.
  • Es kann auch jede andere geeignete Methode zur Erstellung von Speicherschlüsseln verwendet werden. Die 2, 3, 4 und 5 stellen beispielsweise die Tabellen 226 bis 229 in mellanox.com/related-docs/user_manuals/Ethernet_Adapters_Programming_Manual.pdf dar. Diese stellen jeweils ein Beispiel für das Layout der CREATE_MKEY-Eingangsstruktur (2), ein Beispiel für die Feldbeschreibungen der CREATE_MKEY-Eingangsstruktur (3), ein Beispiel für das Layout der CREATE_MKEY-Ausgangsstruktur (4) und ein Beispiel für die Feldbeschreibungen der CREATE_MKEY-Ausgangsstruktur (5) dar.
  • Eine auf NTB (Non-Transparent Bridge) basierende Methode kann auch die Verwendung eines domänenübergreifenden GVMI-Speicherschlüssels, auch bekannt als „cross GVMI Mkey“, wie hier beschrieben, ersetzen, z. B. durch Bereitstellung von Software, die so konfiguriert ist, dass VMA NTB verwenden kann (wie bei der cross GVMI Mkey-Lösung), so dass Software auf dem zweiten Betriebssystem (z. B. BlueField® ) auf den lokalen Host-Puffer des ersten Betriebssystems zugreifen kann.
  • Außerdem extrahiert der VMA, wie beschrieben, bei bestimmten Ausführungsformen die über das Netz zu sendenden Daten direkt aus dem Puffer auf dem Host, der sich in einer anderen PCI- oder PCIe-Domäne befindet. Jede geeignete Implementierung kann verwendet werden, um den VMA zu veranlassen, dies zu tun. Bei einer speicherbezogenen Lösung kann die Anwendung auf dem Host alle oder eine beliebige geeignete Teilmenge der folgenden Aufgaben ausführen:
    • Schritt a. Öffne das Speichervolumen (z. B.: open(„path“)) auf dem emulierten NVMe; und/oder
    • Schritt b. Zuweisung von lokalem Speicher (z. B.: malloc()) und Schreiben der Daten in den zugewiesenen Speicherblock [z. B. wie hier unter Bezugnahme auf Operation 10 beschrieben] und/oder
    • Schritt c. Schreibe() in die geöffnete Datei [z. B. wie hier unter Bezugnahme auf Operation 15 beschrieben]; und/oder
    • Stufe d. Ein Systemkern-Treiber kann den Schreibe()-Aufruf verarbeiten und eine NVMe-Kapsel mit Puffer B vorbereiten, typischerweise ab Stufe b, z. B. wie hier unter Bezugnahme auf Operation 20 beschrieben.
  • Der hier verwendete Begriff „nicht transparent“ steht im Gegensatz zur Konnektivität, die „transparent“ ist. So kann beispielsweise eine PCIe NTB (Non-Transparent Bridge) verwendet werden, um die Konnektivität zwischen mehreren CPUs, GPUs und FPGAs herzustellen. Bei Verwendung einer (transparenten) PCIe-Bridge sind alle PCIe-Busse bis hin zu allen Endpunkten für einen bestimmten Root-Komplex sichtbar. Im Gegensatz dazu leitet eine nichttransparente Bridge den PCIe-Verkehr zwischen separaten PCIe-Bussen weiter, und jeder Root Complex, RC, sieht die NTB (Non-Transparent Bridge) als Endpunktgerät, während der Root Complex und die Geräte auf der anderen Seite der Bridge für den RC nicht sichtbar sind, wie z. B. unter der folgenden Online-Adresse beschrieben: missinglinkelectronics.com/devzone/index.php/fpga-debug-ntb.
  • VMA (Voltaire Messaging Accelerator) ist ein Beispiel für eine Technologie zur Datenbeschleunigung. NVIDIAs VMA, der als Open Source veröffentlicht wurde, steigert die Leistung von nachrichtenbasierten und Streaming-Anwendungen in einer Vielzahl von Branchen, wie z. B. High-Frequency Trading (HFT)-Plattformen und Web 2.0-Clustern. VMA stellt Standard-Socket-APIs mit Systemkern-Bypass-Architektur zur Verfügung und ermöglicht so Benutzerraum-Networking für Multicast, UDP-Unicast und TCP-Streaming. VMA kann sofort eingesetzt werden, z. B. dank eingebauter vorkonfigurierter Profile für z. B. Latenz und Streaming. VMA wird an den folgenden Online-Standorten beschrieben: docs.mellanox.com/category/vma und docs.mellanox.com/display/VMAv911/Introduction+to +VMA; wird davon ausgegangen, dass andere Beschleunigungstechnologien nur eine Teilmenge der Merkmale, Eigenschaften und Funktionalitäten von VMA enthalten können.
  • Die Offenbarungen aller in der Beschreibung erwähnten Veröffentlichungen und Patentdokumente sowie der darin direkt oder indirekt zitierten Veröffentlichungen und Patentdokumente werden hiermit durch Verweis einbezogen, mit Ausnahme von Ausschlussklauseln oder Verzichtserklärungen zum Gegenstand.
  • Es versteht sich von selbst, dass die Softwarekomponenten der vorliegenden Erfindung, falls gewünscht, in ROM-Form (Festwertspeicher) implementiert werden können. Die Softwarekomponenten können im Allgemeinen in Firmware oder Hardware implementiert werden, falls gewünscht, unter Verwendung herkömmlicher Techniken. Außerdem können die Softwarekomponenten beispielsweise als Computerprogrammprodukt oder auf einem materiellen Medium instanziiert werden. In einigen Fällen kann es möglich sein, die Softwarekomponenten als ein von einem geeigneten Computer interpretierbares Signal zu instanziieren, obwohl eine solche Instanziierung in bestimmten Ausführungsformen der vorliegenden Erfindung ausgeschlossen sein kann.
  • Es versteht sich von selbst, dass verschiedene Merkmale der Erfindung, die aus Gründen der Übersichtlichkeit im Zusammenhang mit einzelnen Ausführungsformen beschrieben werden, auch in Kombination in einer einzigen Ausführungsform vorgesehen werden können. Umgekehrt können verschiedene Merkmale der Erfindung, die der Kürze halber im Zusammenhang mit einer einzigen Ausführungsform beschrieben werden, auch separat oder in jeder geeigneten Unterkombination bereitgestellt werden.
  • Dem Fachmann wird klar sein, dass die vorliegende Erfindung nicht auf das beschränkt ist, was vorstehend gezeigt und beschrieben wurde. Vielmehr wird der Umfang der Erfindung durch die beigefügten Ansprüche und deren Äquivalente definiert.
  • Es versteht sich, dass die oben beschriebenen Aspekte und Ausführungsformen nur beispielhaft sind und dass im Rahmen der Ansprüche Änderungen im Detail vorgenommen werden können.
  • Jedes Gerät, Verfahren und Merkmal, das in der Beschreibung und (gegebenenfalls) in den Ansprüchen und Zeichnungen offenbart wird, kann unabhängig oder in jeder geeigneten Kombination bereitgestellt werden.
  • Die in den Ansprüchen enthaltenen Bezugszahlen dienen nur der Veranschaulichung und haben keine einschränkende Wirkung auf den Umfang der Ansprüche.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 9397960 B2 [0027]
    • US 20080123672 [0027]

Claims (26)

  1. Rechnergestütztes System für eine effiziente Interaktion zwischen einem Host, wobei der Host ein erstes Betriebssystem und ein zweites Betriebssystem aufweist, wobei das System umfasst: ein Subsystem auf dem zweiten Betriebssystem, das Daten direkt aus einem Puffer extrahiert, der sich lokal auf dem Host befindet, wobei das System dazu betriebsfähig ist, einen Speicher von einem Bus, der dem ersten Betriebssystem zugeordnet ist, auf einem anderen Bus abzubilden, der dem zweiten Betriebssystem zugeordnet ist und von dem aus auf den Speicher zugegriffen wird, um dadurch eine Verbindung zwischen dem ersten und dem zweiten Betriebssystem durch eine busübergreifende Speicherabbildung zu emulieren.
  2. System nach Anspruch 1, wobei das erste Betriebssystem eine PCI-artige Konnektivität, einschließlich mehrerer Schichten, mit dem zweiten Betriebssystem aufweist.
  3. System nach Anspruch 2, bei dem das zweite Betriebssystem Daten, die über ein Netz zu senden sind, direkt aus einem Puffer auf dem Host extrahiert, der sich in einer anderen PCIe-Domäne befindet.
  4. System nach Anspruch 1, 2 oder 3, wobei das Teilsystem einen Netzwerk-Stapel umfasst.
  5. System nach Anspruch 4, wobei der Netzwerk-Stapel einen VMA umfasst.
  6. System nach Anspruch 4 oder 5, wobei der Netzwerk-Stapel so konfiguriert ist, dass er einen Puffer außerhalb des eigenen Speichers des zweiten Betriebssystems identifiziert, der es der Software des zweiten Betriebssystems ermöglicht, auf den Puffer des ersten Betriebssystems zuzugreifen.
  7. System nach Anspruch 6, wobei der Netzwerk-Stapel so konfiguriert ist, dass er den Puffer unter Verwendung eines Speicherschlüssels und nicht eines Zeigers identifiziert.
  8. System nach Anspruch 7, wobei ein NVMe-TCP-Initiatortreiber den Inhalt des Puffers an einen TCP-Benutzerraum-Stapel im Netzwerk-Stapel weitergibt.
  9. System nach Anspruch 8, wobei das zweite Betriebssystem mehrere ARM-CPUs enthält.
  10. System nach Anspruch 9, wobei ARM-basierte NVMe-TCP-Emulationssoftware den Puffer an einen TCP-Socket in einem VMA weiterleitet.
  11. System nach einem der vorhergehenden Ansprüche, wobei sich der Puffer, der für den Host lokal ist, auf dem Host befindet.
  12. System nach einem der vorhergehenden Ansprüche, wobei das System auch eine Anwendung auf dem Host enthält, die: ein Speichervolumen auf einem emulierten NVMe öffnet, um so eine geöffnete Datei bereitzustellen; einen Speicherblock im lokalen Speicher zuweist und Daten als Puffer B in den Speicherblock schreibt; in die geöffnete Datei schreibt, um dadurch einen Schreibaufruf zu definieren; und einen Systemkern-Treiber, der den Schreibaufruf verarbeitet und eine NVMe-Kapsel mit dem Puffer B vorbereitet, bereitstellt.
  13. System nach einem der vorhergehenden Ansprüche, wobei das System eine NVMe-Emulationssoftware und einen TCP-Software-Stapel enthält, die zusammenarbeiten, um eine busübergreifende Zuordnung zu ermöglichen, indem ein geräteübergreifender Speicherschlüssel mehrere Softwareschichten durchläuft, um dadurch Software auf dem zweiten Betriebssystem den Zugriff auf den lokalen Host-Puffer vom ersten Betriebssystem aus zu ermöglichen.
  14. System nach Anspruch 13, wobei das erste Betriebssystem auch so konfiguriert ist, dass es Operationen steuert, um dadurch zu ermöglichen, dass der geräteübergreifende Speicherschlüssel die mehreren Softwareschichten durchläuft, wobei die Operationen Folgendes umfassen: Operation 25. der NVMe-Treiber C des Hosts sendet eine Anforderung, die auf den Puffer B zeigt, an ein emuliertes NVMe-Gerät D, das über die DPU verwaltetet wird, und das emulierte NVMe-Gerät D stellt dem Host ein NVMe-Gerät (das D emuliert) zur Verfügung; Operation 30. das emulierte NVMe-Gerät D teilt einem Manager E des emulierten NVMe-Geräts D auf einer DPU mit, dass eine NVMe-Anforderung bereit ist, und der Manager E erhält eine Kopie der NVMe-Anforderung im lokalen Speicher des Managers E; Operation 35. Manager E versteht, z. B. durch Zugriff auf die Kopie der NVMe-Anfrage im lokalen Speicher von Manager E, dass die NVMe-Anfrage auf Puffer B verweist, der als Teil des Hostspeichers des Clients einen anderen PCIe-Bus oder eine andere Funktion hat; Operation 40. Manager E startet eine neue Anforderung an einen NVMe-TCP-Initiatortreiber F, der auf der DPU läuft, mit Attributen zur Ausführung dieser neuen Anforderung, und die neue Anforderung oder ihre Attribute umfassen lokale Anforderungsinformationen und den Inhalt des Puffers (B), der entfernt ist; Operation 50. der NVMe-TCP-Initiatortreiber F hält über einen TCP-Benutzerraum-Stapel G auf der DPU einen TCP-Socket mit einem Ziel verbunden; Operation 53. der NVMe-TCP-Initiatortreiber F übergibt die NVMe-TCPformatierten Header der Anforderung im lokalen Speicher der DPU an den VMA-TCP-Benutzerraum-Stapel G, und die Header werden von F über eine BSD-Sende-API an G weitergeleitet; Operation 57. der NVMe-TCP-Initiatortreiber F übergibt den Inhalt des Puffers B an den VMA-TCP-Benutzerraum-Stapel G, und der Inhalt des Puffers B wird über die erweiterte Sende-API von G an G weitergeleitet; Operation 60. der TCP-Benutzerraum-Stapel G verwaltet den TCP-Stapel und die HW-Sendewarteschlange, um den DPU-Speicherstromanteil und den Host-Speicherstromanteil ohne Kopieren des Puffers B oder der Speicherstromanteile an den lokalen PCIe-Funktionsbus zu senden; Operation 70. der NVMe-TCP-Initiatortreiber F erhält vom Ziel eine NVMe-TCP-Antwort auf die gesendete NVMe-TCP-Anfrage; Operation 75. als Reaktion darauf gibt der NVMe-TCP-Initiatortreiber F den Puffer B als den relevanten TCP-Stream-Teil im TCP-Benutzerraum-Stapel G frei, der mit einem ACK versehen wurde.
  15. System nach Anspruch 13 oder 14, wobei der Speicherschlüssel einen RDMA-Schlüssel umfasst.
  16. System nach Anspruch 13 oder 14, wobei der Speicherschlüssel einen DMA-Schlüssel umfasst.
  17. System nach einem der vorhergehenden Ansprüche, wobei eine NTB (Non-Transparent Bridge) verwendet wird, um Software auf dem zweiten Betriebssystem den Zugriff auf den lokalen Host-Puffer vom ersten Betriebssystem aus zu ermöglichen.
  18. System nach Anspruch 17, wobei die NTB (Non-Transparent Bridge) von einem VMA auf dem zweiten Betriebssystem verwendet wird.
  19. Verfahren zur effizienten Interaktion zwischen einem Host und einem entfernten Ziel, wobei das Verfahren Folgendes umfasst: Bereitstellen eines Hosts mit einem ersten Betriebssystem und eines entfernten Ziels mit einem zweiten Betriebssystem, das eine PCI-Typ-Verbindung mit dem ersten Betriebssystem hat; und gemeinsame Nutzung mindestens eines Puffers, der sich auf dem Host befindet, mit dem entfernten Ziel, einschließlich der Bereitstellung eines Null-Kopie-Zugriffs für das Ziel auf den mindestens einen Puffer, um dadurch eine doppelte Null-Kopie über mehrere Betriebssysteme hinweg bereitzustellen.
  20. Verfahren nach Anspruch 19, wobei mindestens einer von Host und Ziel eine nichttransparente Brücke (Non-Transparent Bridge, NTB) für die Inter-Domain-Kommunikation über PCIe-Schnittstellen verwendet.
  21. Verfahren nach Anspruch 19 oder 20, wobei eine E/A-Verarbeitungseinheit (IPU) mit einer Reihe von ARM-Prozessorkernen zwischen dem Host und einem Netzwerk eingesetzt wird und wobei SNAP TCP Speicher auf den ARM-Prozessorkernen den PCIe-Zugriff vom Host unter Verwendung mindestens eines XGVMI-Speicherschlüssels auf Null kopiert.
  22. Verfahren nach Anspruch 21, bei dem ein erster Kopiervorgang vom Host zur IPU, und ein zweiter Kopiervorgang vom CPU-Speicher zu einem TCP-Stapel erfolgt.
  23. Verfahren nach Anspruch 22, wobei das Verfahren die folgenden Operationen umfasst, um dadurch IPOS zu erhöhen und/oder die Latenzzeit zu verringern und/oder die CPU-Auslastung zu verringern, indem die Kopien des Speicherbereitstellungspuffers reduziert werden: Operation 10. eine Anwendung auf einem Client-Host bereitet einen entfernten Datenpuffer B im lokalen Speicher des Hosts vor; Operation 15. die Host-Anwendung fordert einen NVMe-Treiber C auf dem Client-Host auf, einen entfernten Puffer B in ein Speichervolumen zu schreiben; Operation 20. der NVMe-Treiber C auf dem Client-Host bereitet eine NVMe-Anforderung vor, die auf den Puffer B verweist; Operation 25. der NVMe-Treiber C des Hosts sendet die Anforderung, die auf den Puffer B zeigt, an ein emuliertes NVMe-Gerät D, das über die DPU verwaltetet wird, und das emulierte NVMe-Gerät D stellt dem Client-Host ein NVMe-Gerät zur Verfügung, das das emulierte NVMe-Gerät D emuliert; Operation 30. das emulierte NVMe-Gerät D teilt einem Manager E des emulierten NVMe-Geräts D auf einer DPU mit, dass eine NVMe-Anfrage bereit ist, und Manager E erhält eine Kopie der NVMe-Anfrage im lokalen Speicher von Manager E; Operation 35. Manager E versteht, dass die NVMe-Anfrage auf Puffer B verweist, der Teil des Client-Host-Speichers ist und daher einen anderen PCIe-Bus oder eine andere Funktion hat; Operation 40. Manager E startet eine neue Anforderung an einen NVMe-TCP-Initiatortreiber F, der auf der DPU läuft, mit Attributen zur Ausführung dieser neuen Anforderung, und die neue Anforderung oder ihre Attribute umfassen lokale Anforderungsinformationen und den Inhalt des Ferndatenpuffers B; Operation 50. NVMe-TCP-Initiatortreiber F hält über einen VMA-TCP-Benutzerraum-Stapel G auf der DPU einen TCP-Socket mit einem Ziel verbunden; Operation 53. der NVMe-TCP-Initiatortreiber F übergibt die NVMe-TCPformatierten Header der Anforderung im lokalen Speicher der DPU an den VMA-TCP-Benutzerraum-Stapel G, und die Header können vom NVMe-TCP-Initiatortreiber F über eine BSD send()-API an den VMA-TCP-Benutzerraum-Stapel G übergeben werden; Operation 57. der NVMe-TCP-Initiatortreiber F übergibt den Inhalt von Puffer B an den VMA-TCP-Benutzerraum-Stapel G, und der Inhalt von Puffer B wird über die erweiterte Sende-API vom NVMe-TCP-Initiatortreiber F an den VMA-TCP-Benutzerraum-Stapel G übergeben; Operation 60. der TCP-Benutzerraum-Stapel G verwaltet den TCP-Stapel und die HW-Sendewarteschlange, um den DPU-Speicherstromanteil und den Host-Speicherstromanteil ohne Kopieren des Puffers B oder der Speicherstromanteile an einen lokalen PCIe-Funktionsbus zu senden; Operation 70. der NVMe-TCP-Initiatortreiber F erhält eine NVMe-TCP-Antwort vom Ziel auf die NVMe-TCP-Anfrage, die gesendet wurde; und Operation 75. als Reaktion darauf gibt der NVMe-TCP-Initiatortreiber F den Puffer B frei, da der betreffende TCP-Stream-Teil im VMA-TCP-Benutzerraum-Stapel G mit einem ACK versehen wurde.
  24. Verfahren nach einem der Ansprüche 21 bis 23, wobei die IPU eine VMA umfasst und wobei ein Netzwerk-Stapel einen Puffer identifiziert, der Daten speichert, die über das Netzwerk zu senden sind, wobei zusätzlich zu einem Zeiger ein Speicherschlüssel verwendet wird.
  25. Verfahren nach Anspruch 24, wobei der Netzwerk-Stapel die über das Netzwerk zu sendenden Daten direkt aus dem Puffer auf dem Host extrahiert, der sich in einer anderen PCIe-Domäne befindet.
  26. Verfahren nach einem der Ansprüche 19 bis 25, wobei das entfernte Ziel mit dem Host über ein Netzwerk verbunden ist, das dem Host nicht bekannt ist.
DE102022205478.4A 2021-06-03 2022-05-31 Busübergreifende speicherabbildung Pending DE102022205478A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/338,131 US11693804B2 (en) 2021-06-03 2021-06-03 Cross bus memory mapping
US17/338,131 2021-06-03

Publications (1)

Publication Number Publication Date
DE102022205478A1 true DE102022205478A1 (de) 2022-12-08

Family

ID=84101971

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022205478.4A Pending DE102022205478A1 (de) 2021-06-03 2022-05-31 Busübergreifende speicherabbildung

Country Status (3)

Country Link
US (1) US11693804B2 (de)
CN (1) CN115437977A (de)
DE (1) DE102022205478A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3998179A4 (de) * 2019-07-09 2023-04-26 Hosiden Corporation Steuerungsvorrichtung
US11940935B2 (en) * 2021-04-19 2024-03-26 Mellanox Technologies, Ltd. Apparatus, method and computer program product for efficient software-defined network accelerated processing using storage devices which are local relative to a host
EP4164184A1 (de) * 2021-10-07 2023-04-12 Renesas Electronics Corporation Kommunikationssteuerung und kommunikationssteuerungsverfahren
US11847081B2 (en) * 2022-03-24 2023-12-19 Dell Products L.P. Smart network interface controller (SmartNIC) storage non-disruptive update
US11977504B2 (en) * 2022-04-26 2024-05-07 Dell Products L.P. Smart network interface controller operating system deployment
US12117948B2 (en) 2022-10-31 2024-10-15 Mellanox Technologies, Ltd. Data processing unit with transparent root complex
US12007921B2 (en) 2022-11-02 2024-06-11 Mellanox Technologies, Ltd. Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080123672A1 (en) 2006-08-31 2008-05-29 Keith Iain Wilkinson Multiple context single logic virtual host channel adapter
US9397960B2 (en) 2011-11-08 2016-07-19 Mellanox Technologies Ltd. Packet steering

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9104334B2 (en) * 2013-08-20 2015-08-11 Avago Technologies General Ip (Singapore) Pte. Ltd Performance improvements in input/output operations between a host system and an adapter-coupled cache
WO2017009859A1 (en) * 2015-07-10 2017-01-19 Prasad Lalathuputhanpura Kochukunju Amicro data center (mdc) in a box system and method thereof
US10162793B1 (en) * 2015-09-29 2018-12-25 Amazon Technologies, Inc. Storage adapter device for communicating with network storage

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080123672A1 (en) 2006-08-31 2008-05-29 Keith Iain Wilkinson Multiple context single logic virtual host channel adapter
US9397960B2 (en) 2011-11-08 2016-07-19 Mellanox Technologies Ltd. Packet steering

Also Published As

Publication number Publication date
CN115437977A (zh) 2022-12-06
US11693804B2 (en) 2023-07-04
US20220391341A1 (en) 2022-12-08

Similar Documents

Publication Publication Date Title
DE102022205478A1 (de) Busübergreifende speicherabbildung
DE60212626T2 (de) Endknotenunterteilung mittels lokaler identifikatoren
DE102019110023A1 (de) System mit programmierbarer Multi-Kontext-Beschleuniger-Schaltung
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE102018006756A1 (de) Beschleuniger-Fabric
DE102018006546A1 (de) Plattformschnittstellenschicht und protokoll für beschleuniger
DE112013004187B4 (de) Technologie für Netzwerk-Datenübertragung durch ein Computersystem unter Verwendung von mindestens zwei Datenübertragungsprotokollen
DE102015102692A1 (de) Verfahren zum Optimieren von Netzdatenströmen in einem eingeschränkten System
DE102020127705A1 (de) Techniken für einen effizienten fabric-attached-speicher
DE112017003294B4 (de) Technologien für ein skalierbares Senden und Empfangen von Paketen
DE102021121062A1 (de) System, vorrichtung und verfahren zur dynamischen bereitstellung kohärenter speicherdomänen
DE112012002404B4 (de) Konfiguration und Management virtueller Netzwerke
DE102022203658A1 (de) Gerät, Verfahren und Computerprogrammprodukt für effiziente, softwaredefinierte, netzbeschleunigte Verarbeitung unter Verwendung von Speichergeräten, die in Bezug auf einem Host lokal sind
DE102014109518A1 (de) Techniken zur Initialisierung von einem Speichergerät, auf das von der Ferne zugegriffen werden kann
DE112013005044T5 (de) Ausführen von eingehenden PCIE-Schreiboperationen in einen Speicher und Partnereinrichtungen per Dualcast
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE112008002416T5 (de) Gemeinsame Nutzung von Legacy-Geräten in einer Multithost-Umgebung
DE112021001408T5 (de) Verwendung kohärent verbundener schnittstellen in einem netzwerkstapelrahmen
DE102018127751A1 (de) Einheitlicher Adressraum für mehrere Verbindungen
DE112006001167T5 (de) Simulieren mehrerer virtueller Kanäle in Switching-Fabric-Netzwerken
DE102006032832A1 (de) Netzwerksystem und Verfahren zur Steuerung verteilter Speicher
DE112022003720T5 (de) Verwenden eines fernen pods in kubernetes
DE112008001168T5 (de) System und Verfahren zum gemeinschaftlichen Verwenden eines Druckers
DE112016006065T5 (de) Spekulative nummerierung von adressräumen für bus-einrichtungsfunktionen
DE112008001957T5 (de) Systeme und Verfahren zum Verbessern der Leistungsfähigkeit eines routfähigen Netzwerks

Legal Events

Date Code Title Description
R012 Request for examination validly filed