DE112020007201T5 - Speicherzuordnung für verteilte Verarbeitungsvorrichtungen - Google Patents

Speicherzuordnung für verteilte Verarbeitungsvorrichtungen Download PDF

Info

Publication number
DE112020007201T5
DE112020007201T5 DE112020007201.0T DE112020007201T DE112020007201T5 DE 112020007201 T5 DE112020007201 T5 DE 112020007201T5 DE 112020007201 T DE112020007201 T DE 112020007201T DE 112020007201 T5 DE112020007201 T5 DE 112020007201T5
Authority
DE
Germany
Prior art keywords
data
buffer
offload
processor
system memory
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
DE112020007201.0T
Other languages
English (en)
Inventor
Patrick G. Kutch
Andrey Chilikin
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 DE112020007201T5 publication Critical patent/DE112020007201T5/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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • 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
    • 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/40Bus coupling
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Abstract

Hierin beschriebene Beispiele betreffen einen Offload-Prozessor zum Empfangen von Daten zur Übertragung unter Verwendung einer Netzwerkschnittstelle, oder die in einem Paket durch eine Netzwerkschnittstelle empfangen werden. Bei einigen Beispielen kann der Offload-Prozessor eine Paketspeicherungssteuerung beinhalten, um zu bestimmen, ob Daten nach der Verarbeitung durch die Offload-Verarbeitungsvorrichtung in einem Puffer der Offload-Verarbeitungsvorrichtung oder einem Systemspeicher gespeichert werden sollen. In manchen Beispielen basiert das Bestimmen, ob Daten in einem Puffer des Offload-Prozessors oder einem Systemspeicher gespeichert werden sollen, auf einem oder mehreren des Folgenden: verfügbarer Pufferraum, Latenzgrenze, die mit den Daten assoziiert ist, Priorität, die mit den Daten assoziiert ist, oder verfügbare Bandbreite durch eine Schnittstelle zwischen dem Puffer und dem Systemspeicher. In manchen Beispielen ist der Offload-Prozessor dazu ausgelegt, einen Deskriptor zu empfangen und einen Speicherungsort von Daten in dem Deskriptor zu spezifizieren, wobei sich der Speicherungsort innerhalb des Puffers oder des Systemspeichers befindet.

Description

  • PRIORITÄTSANSPRUCH
  • Die vorliegende Anmeldung beansprucht die Priorität gemäß 35 U.S.C. § 365(c) der US-Anmeldung Nr. 15/931,476 , eingereicht am 13. Mai 2020, mit dem Titel „MEMORY ALLOCATION FOR DISTRIBUTED PROCESSING DEVICES“, die die Priorität der vorläufigen US-Patentanmeldung Nr. 63/022,193 , eingereicht am 8. Mai 2020, mit dem Titel „MEMORY ALLOCATION FOR DISTRIBUTED PROCESSING DEVICES“ beansprucht, die hiermit durch Bezugnahme in ihrer Gesamtheit aufgenommen werden.
  • BESCHREIBUNG
  • Rechenvorrichtungen beinhalten Hardwarekomponenten, wie etwa Prozessoren, Speicher und eine Kommunikationsschnittstelle. Mit immer zunehmender Funktionalität und Datenvolumen nimmt auch die Betriebsgeschwindigkeit von Hardwarevorrichtungen zu. In manchen Fällen können die Hardwarevorrichtungen unter Verwendung leitfähiger Leitungen auf einer Leiterplatte miteinander gekoppelt sein, um Kommunikationen und eine Zusammenarbeit zwischen Vorrichtungen zu ermöglichen. Andere Modelle von Zusammenarbeit (Interoperation) können verwendet werden, wie etwa verteiltes Rechnen, bei dem eine Vorrichtungskommunikation ein lokales Netzwerk oder das Internet verwendet und paketbasierte Kommunikation verwendet wird.
  • Figurenliste
    • 1 stellt eine beispielhafte Architektur dar.
    • 2 stellt ein beispielhaftes System dar.
    • 3 stellt eine beispielhafte Empfangsoperation dar.
    • 4 stellt eine beispielhafte Empfangsoperation dar.
    • 5 stellt eine beispielhafte Übertragungsoperation dar.
    • 6 stellt ein Beispiel für die Verwendung von Deskriptoren in Verbindung mit einer Übertragungsoperation dar.
    • 7A und 7B stellen beispielhafte Prozesse dar.
    • 8 stellt ein System dar.
    • 9 stellt eine beispielhafte Umgebung dar.
    • 10 stellt eine beispielhafte Netzwerkschnittstelle dar.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Bei manchen Beispielen kann ein System von Vorrichtungen als Kacheln unterschiedlicher Funktionsblöcke implementiert sein, die miteinander verbunden und Teil eines Multi-Chip-Package (MCP) sind. Bei manchen Beispielen kann ein einziger Chip mit separaten Funktionsblöcken gebildet werden (z. B. System-on-Chip (SoC)).
  • 1 stellt eine beispielhafte CPU-Architektur dar. Bei diesem Beispiel kann ein physisches Package diskrete Dies und Kacheln, die durch ein Mesh oder eine andere Konnektivität verbunden sind, sowie eine Schnittstelle (nicht gezeigt) und eine Wärmeabfuhr (nicht gezeigt) beinhalten. Ein Die kann Halbleitervorrichtungen beinhalten, die eine oder mehrere Verarbeitungsvorrichtungen oder eine andere Schaltungsanordnung bilden. Eine Kachel kann Halbleitervorrichtungen beinhalten, die eine oder mehrere Verarbeitungsvorrichtungen oder eine andere Schaltungsanordnung bilden. Zum Beispiel kann ein physisches CPU-Package einen oder mehrere Dies, ein Kunststoff- oder Keramikgehäuse für die Dies und leitfähige Kontakte, die leitfähig mit einer Leiterplatte gekoppelt sind, beinhalten.
  • Eine Kernkachel 102-0 und eine Kernkachel 102-1 können einen oder mehrere Kerne beinhalten. Ein Kern kann ein Ausführungskern oder eine Rechen-Engine sein, der/die in der Lage ist, Anweisungen auszuführen. Ein Kern kann auf seinen eigenen Cache und Nurlesespeicher (ROM) zugreifen, oder mehrere Kerne können einen Cache oder ROM gemeinsam nutzen. Kerne können homogene (z. B. die gleichen Verarbeitungsfähigkeiten) und/oder heterogene Vorrichtungen (z. B. unterschiedliche Verarbeitungsfähigkeiten) sein. Die Frequenz oder der Leistungsverbrauch eines Kerns kann anpassbar sein. Eine beliebige Art von Inter-Prozessor-Kommunikationstechniken kann verwendet werden, wie etwa unter anderem Messaging, Inter-Prozessor-Interrupts (IPI), Inter-Prozessor-Kommunikationen und so weiter. Kerne können auf eine beliebige Art und Weise verbunden sein, wie etwa, ohne darauf beschränkt zu sein, Bus, Ring oder Mesh. Kerne können über ein Interconnect mit einem Systemagenten (Uncore) gekoppelt sein. Der Systemagent kann einen gemeinsam genutzten Cache beinhalten, der jeden Typ von Cache beinhalten kann (z. B. Level 1, Level 2 oder Last Level Cache (LLC)). Der Systemagent kann eines oder mehrere von Folgendem beinhalten: eine Speichersteuerung, einen gemeinsam genutzten Cache, einen Cache-Kohärenzmanager, arithmetische Logikeinheiten, Gleitkommaeinheiten, Kern- oder Prozessor-Interconnects oder Bus- oder Linksteuerungen. Der Systemagent oder das Uncore kann eines oder mehrere der Folgenden bereitstellen: Direktspeicherzugriff(DMA)-Engine-Verbindung, nicht gecachte kohärente Master-Verbindung, Daten-Cache-Kohärenz zwischen Kernen und Arbitrierung von Cache-Anforderungen, oder Advanced-Microcontroller-Bus-Architecture(AMBA)-Fähigkeiten. Der Systemagent oder das Uncore kann Prioritäten und Taktgeschwindigkeiten für Empfangs- und Übertragungs-Fabrics und Speichersteuerungen verwalten.
  • Die Kernkacheln 102-0 und 102-1 können unter Verwendung eines Hochgeschwindigkeits-Interconnect leitfähig miteinander verbunden werden, das mit einem beliebigen aus Intel QuickPath Interconnect (QPI), Intel Ultra Path Interconnect (UPI), Intel On-Chip System Fabric (IOSF), Omnipath, Compute Express Link (CXL) kompatibel ist. Die Anzahl von Kernkacheln ist nicht auf dieses Beispiel beschränkt, und kann eine beliebige Anzahl sein, wie etwa 4, 8 und so weiter. Der Kern 102-0 kann verschiedene Schnittstellen 110-0 bis 110-3 beinhalten, obwohl eine beliebige Anzahl von Schnittstellen verwendet werden kann. Zum Beispiel kann eine beliebige Schnittstelle 110-0 bis 110-3 mit Peripheral Component Interconnect (PCIe) oder anderen Standards kompatibel sein. Gleichermaßen kann der Kern 102-1 verschiedene Schnittstellen 112-0 bis 112-3 beinhalten, obwohl eine beliebige Anzahl von Schnittstellen verwendet werden kann. Zum Beispiel kann eine beliebige Schnittstelle 112-0 bis 112-3 mit Peripheral Component Interconnect (PCIe) oder anderen Standards kompatibel sein.
  • Die Kernkachel 102-0 kann leitfähig mit der Eingabe-Ausgabe(EA)-Vorrichtung 104-0 unter Verwendung eines Hochgeschwindigkeits-Interconnect verbunden sein, das zumindest mit einem beliebigen hierin beschriebenen Standard kompatibel ist. Gleichermaßen kann die Kernkachel 102-1 leitfähig mit der Eingabe-Ausgabe(EA)-Vorrichtung 104-1 unter Verwendung eines Hochgeschwindigkeits-Interconnect verbunden sein, das zumindest mit einem beliebigen hierin beschriebenen Standard kompatibel ist. Die EA-Vorrichtung 104-0 kann auf einer separaten integrierten Schaltung oder einem separaten Die als die der Kernkachel 102-0 und/oder der Prozessoren 106-0 gebildet sein. Gleichermaßen kann die EA-Vorrichtung 104-1 auf einer separaten integrierten Schaltung oder einem separaten Die als die der Kernkachel 102-1 und/oder der Prozessoren 106-1 gebildet sein.
  • Die Prozessoren 106-0 und 106-1 können als Offload-Engines für den jeweiligen Kern 102-0 und Kern 102-1 verfügbar sein. Die Prozessoren 106-0 und 106-1 können sich innerhalb eines gleichen CPU-Package befinden wie das, in dem sich eine Konnektivität mit einer Leiterplatte für eines oder mehrere von Folgendem befindet, und das diese Konnektivität bereitstellt: EA 104-0, EA 104-1, Kern 102-0, Kern 102-1 und Netzwerkschnittstelle 114. Die Prozessoren 106-0 und 106-1 können zum Beispiel Beschleuniger (z. B. feste oder programmierbare Schaltungsanordnungen) für Operationen, wie etwa Paketverarbeitung, Chiffrierung (z. B. Verschlüsselung oder Entschlüsselung), Zugriffssteuerliste, angewendetes maschinelles Lernen (ML) oder andere Operationen, beinhalten. Die Prozessoren 106-0 können zum Beispiel Paketverkehr von einem physischen Port der Netzwerkschnittstelle 114 (z. B. Ethernet-Steuerung) direkt über die EA 104-0 empfangen. Ein oder mehrere Ports der Netzwerkschnittstelle 114 (z. B. virtuelle Funktion (VF), vermittelte Vorrichtung und so weiter) können dazu ausgelegt sein, Daten über eine Softwarekomponente (z. B. Steuerebenenanwendung (CPA: Control Plane Application), die im Benutzerraum ausgeführt wird) direkt zu einem Speicher (z. B. durch Direktspeicherzugriff (DMA: Direct Memory Access) der Prozessoren 106-1 zu kopieren. Wenn Daten von den Prozessoren 106-1 unter Verwendung der Netzwerkschnittstelle 114 übertragen werden sollen, können die Prozessoren 106-1 Daten zu dem Host-Speicher (nicht gezeigt) kopieren und die Netzwerkschnittstelle 114 darüber benachrichtigen, dass es zu übertragende Daten gibt.
  • Speicher, der zur Verwendung durch die Prozessoren 106-1 verfügbar ist, kann im Vergleich zu der im Host-Speicher verfügbaren Größe begrenzt und klein sein. In manchen Fällen kann die Netzwerkschnittstelle 114 oder eine andere Vorrichtung (z. B. der Kern 102-1) Daten mit undeterministischen Raten (z. B. langsam, schnell oder stoßweise) zu den Prozessoren 106-1 senden, und aufgrund einer begrenzten Größe von Speicherpuffern der Prozessoren 106-1 können Daten wiederholt oder häufig in und aus Speicherpuffern der Prozessoren 106-1 zu Host-Speicher kopiert werden, und jede Datenkopie kann Latenz beim Abschluss einer Operation oder Verfügbarkeit von Daten sowie die Verwendung von Schnittstellenbandbreite für jede Datenkopie, die die Schnittstellenbandbreite reduzieren kann, die für andere Verwendungen oder andere Vorrichtungen verfügbar ist, einführen. Zum Beispiel kann Austrittsverkehr aufgrund von begrenztem Pufferraum, der innerhalb der Prozessoren 106-1 verfügbar ist, von den Prozessoren 106-1 in den Host-Speicher und dann vom Host-Speicher zu der Netzwerkschnittstelle 114 kopiert werden.
  • Verschiedene Ausführungsformen stellen bereit, dass eine Offload-Engine (z. B. Prozessoren) verfügbaren Pufferraum innerhalb der Offload-Engine oder des Host-Speichers auswählt, um zu versuchen, eine Menge von Kopieroperationen zwischen dem Host-Speicher und dem Puffer zu reduzieren. Um zum Beispiel Latenz zu reduzieren oder genutzte Schnittstellenbandbreite zu reduzieren, kann Inhalt basierend auf einem oder mehreren von Folgendem von einem Prozessorpuffer zu Host- oder Systemspeicher kopiert werden: Pufferraum hat wenig Platz, Daten haben eine höhere Latenz oder eine niedrigere Priorität, oder verfügbare Bandbreite durch eine Schnittstelle zwischen dem Puffer und dem Host-Speicher.
  • Verschiedene Ausführungsformen können die Latenz der Datenverfügbarkeit oder -übertragung reduzieren und die Nutzung der Schnittstellenbandbreite reduzieren, indem nicht der gesamte Verkehr zu dem Host-Speicher kopiert und etwas Verkehr in Puffern gespeichert wird. Für eine Datenübertragungsoperation kann das Beibehalten von Daten in Puffern zum Beispiel eine Menge von Kopieroperationen reduzieren, und Daten können für eine frühere Übertragung verfügbar sein, als wenn die Daten zu dem Host-Speicher kopiert und dann in eine Netzwerkschnittstelle zur Übertragung kopiert würden. Wenn sich eine Verkehrsrate erhöht oder Szenarien ergeben, bei denen Verkehr in den Host-Speicher bewegt werden soll, kann das Platzieren des Verkehrs in den Host-Speicher den Prozessoren weiterhin ermöglichen, Zieldurchsatzraten verarbeiteter Daten zu erreichen.
  • Verschiedene Ausführungsformen stellen Verarbeitungsoperationen vor der Paketübertragung oder nach dem Paketempfang bereit. Verarbeitungsoperationen können zum Beispiel eines oder mehrere von Folgendem beinhalten: Paketverarbeitung, Chiffrierung, Prüfsummenberechnung oder -validierung, Tunnelverkapselung oder -entkapselung, Verschlüsselung oder Entschlüsselung, TCP-Offload (TCP: Transmission Control Protocol - Übertragungssteuerungsprotokoll) und so weiter. Prozessoren können Paketverarbeitung für eine virtualisierte Netzwerkfunktion (VNF) ausführen, die von einer CPU ausgeführt wird. Die Prozessoren können zum Beispiel ein Paket empfangen und Aktionen daran durchführen (z. B. das Paket in Übereinstimmung mit einer Kryptographiekomponente entschlüsseln) und das verarbeitete Paket zu dem Host-Speicher für den Zugriff durch die VNF, die durch den Host ausgeführt wird, senden. Die Prozessoren können Aktionen durchführen, die von VNFs benötigt werden, einschließlich 5G-Benutzerebenenfunktion (UPF: User Plane Function) oder Next Generation Firewall (NGFW: Next Generation Firewall).
  • Bei manchen Beispielen kann eine CPU einen Treiber für einen Offload-Prozessor und einen Treiber für eine Netzwerkschnittstelle ausführen. Wenn eine Netzwerkschnittstelle zur Verwendung aktiviert ist, kann ein CPU-ausgeführtes Betriebssystem (OS) einen Treiber ausführen, um die Netzwerkschnittstelle zu nutzen und zu konfigurieren. Wenn die CPU einen Treiber für den Offload-Prozessor ausführt, erkennt das OS, dass der Offload-Prozessor für den Zugriff verfügbar ist, interagiert aber nicht direkt mit der Netzwerkschnittstelle. Mit anderen Worten, in manchen Beispielen kann das OS den Offload-Prozessor erkennen, die Netzwerkschnittstelle aber nicht erkennen oder direkt mit ihr interagieren. Nachdem der Offload-Prozessor-Treiber und der Netzwerkschnittstellentreiber initialisiert wurden, können der Offload-Prozessor und die Netzwerkschnittstelle unter Verwendung einer verfügbaren Schnittstelle oder verfügbarer Schnittstellen (z. B. PCIe) kommunizieren. Eine Netzwerkschnittstelle kann dazu programmiert sein, empfangenen Verkehr zu dem Offload-Prozessorpuffer (z. B. DMA) anstelle des Host-Speichers für einen Zugriff durch das OS zu kopieren.
  • In manchen Beispielen kann der Offload-Prozessor DMA oder RDMA (Remote Direct Memory Access - Fern-Direktspeicherzugriff) (oder eine andere direkte Kopieroperation) verwenden, um Inhalt von einem Offload-Prozessorpuffer zu einem Host-Speicher innerhalb desselben Package oder unterschiedlichen Package zu kopieren. In manchen Beispielen kann der Offload-Prozessor DMA oder RDMA (Remote Direct Memory Access - Fern-Direktspeicherzugriff) (oder eine andere direkte Kopieroperation) verwenden, um Inhalt von einem Offload-Prozessorpuffer zu einer Netzwerkschnittstelle innerhalb desselben Package oder unterschiedlichen Package zu kopieren. In manchen Beispielen kann die CPU DMA oder RDMA (Remote Direct Memory Access - Fern-Direktspeicherzugriff) (oder eine andere direkte Kopieroperation) verwenden, um Inhalt von einem Speicher zu einem Offload-Prozessorpuffer innerhalb desselben Package oder unterschiedlichen Package zu kopieren. In manchen Beispielen kann die CPU DMA oder RDMA (Remote Direct Memory Access - Fern-Direktspeicherzugriff) (oder eine andere direkte Kopieroperation) verwenden, um Inhalt von einem Speicher zu einer Netzwerkschnittstelle innerhalb desselben Package oder unterschiedlichen Package zu kopieren. In manchen Beispielen kann die Netzwerkschnittstelle DMA oder RDMA (Remote Direct Memory Access - Fern-Direktspeicherzugriff) (oder eine andere direkte Kopieroperation) verwenden, um Inhalt zu einem Offload-Prozessorpuffer innerhalb desselben Package oder unterschiedlichen Package zu kopieren. In manchen Beispielen kann die Netzwerkschnittstelle DMA oder RDMA (Remote Direct Memory Access - Fern-Direktspeicherzugriff) (oder eine andere direkte Kopieroperation) verwenden, um Inhalt zu einem Speicher innerhalb desselben Package oder unterschiedlichen Package zu kopieren.
  • Zum Beispiel beinhaltet ein Package einen oder mehrere Dies, eine oder mehrere Kacheln oder einen oder mehrere Chips (z. B. Prozessor, CPU, Netzwerkschnittstelle). Ein Package kann einen oder mehrere Dies, eine oder mehrere Kacheln oder einen oder mehrere Chips, ein Kunststoff- oder Keramikgehäuse für die Dies, Kacheln oder Chips und leitfähige Kontakte zum Verbinden mit einer Hauptplatine oder Leiterplatte beinhalten. Dies, Chips oder Vorrichtungen können unter Verwendung unterschiedlicher Halbleiterprozessknotengrößen (z. B. 5 nm, 7 nm, 10 nm und so weiter) gefertigt werden. Dies, Kacheln oder Chips können unter Verwendung von Protokollen, wie etwa Intel® Embedded Multi-die Interconnect Bridge (EMIB) oder eines anderen Protokolls, kommunizieren, was ein In-Package-Interconnect von homogenen Dies, Kacheln oder Chips (z. B. Dies, Kacheln oder Chips, die aus unterschiedlichen Prozessknotengrößen oder unterschiedlicher Funktionalität gefertigt sind) oder heterogenen Dies, Kacheln oder Chips (z. B. Dies, Kacheln oder Chips, die aus unterschiedlichen Prozessknotengrößen oder unterschiedlicher Funktionalität gefertigt sind) bereitstellen kann.
  • Verschiedene Ausführungsformen können Ost-West-Verkehr (z. B. Verkehr innerhalb eines Datenzentrums) reduzieren, indem ein oder mehrere Offload-Prozessoren innerhalb eines Package bereitgestellt werden.
  • 2 stellt ein beispielhaftes System dar. Das CPU-Package 200 kann Kerne 206 und Speicher 204 verwenden, um zumindest virtualisierte Ausführungsumgebungen (VEEs: Virtualized Execution Environments) 208, eine VNF 210, ein Betriebssystem 212 oder Anwendungen (nicht gezeigt) auszuführen. Bei manchen Beispielen können die Kerne 206 eines oder mehrere von Folgendem beinhalten: einen Kern, eine Grafikverarbeitungseinheit (GPU), ein feldprogrammierbares Gate-Array (FPGA) oder eine anwendungsspezifische integrierte Schaltung (ASIC). Bei manchen Beispielen kann ein Kern unter anderem von Intel®, ARM®, AMD®, Qualcomm®, IBM®, Texas Instruments® verkauft oder entwickelt werden. Bei manchen Beispielen kann ein Betriebssystem (OS) 212 Linux®, Windows®, FreeBSD®, Android®, MacOS®, iOS® oder ein beliebiges anderes Betriebssystem sein. Der Speicher 204 kann eine beliebige Art von flüchtigem Speicher (z. B. DRAM), nichtflüchtigem Speicher oder persistentem Speicher sein.
  • Die virtualisierte Ausführungsumgebung 208 kann zumindest eine virtuelle Maschine oder einen Container beinhalten. Eine virtuelle Maschine (VM) kann Software sein, die ein Betriebssystem und eine oder mehrere Anwendungen ausführt. Eine VM kann durch Spezifikation, Konfigurationsdateien, virtuelle Plattendatei, NVRAM-Einstelldatei (NVRAM: Volatile Random Access Memory - flüchtiger Direktzugriffsspeicher) und die Protokolldatei definiert werden und wird durch die physischen Ressourcen einer Host-Rechenplattform gesichert. Eine VM kann ein Betriebssystem (OS) oder eine Anwendungsumgebung sein, das/die auf Software installiert ist, die dedizierte Hardware imitiert. Der Endbenutzer hat auf einer virtuellen Maschine die gleiche Erfahrung, wie er auf dedizierter Hardware hätte. Spezialisierte Software, ein Hypervisor genannt, emuliert die CPU, den Speicher, die Festplatte, das Netzwerk und andere Hardwareressourcen des PC-Clients oder -Servers vollständig, wodurch ermöglicht wird, dass virtuelle Maschinen die Ressourcen gemeinsam nutzen. Der Hypervisor kann mehrere virtuelle Hardwareplattformen emulieren, die voneinander isoliert sind, wodurch ermöglicht wird, dass virtuelle Maschinen Linux®, Windows® Server, VMware ESXi und andere Betriebssysteme auf demselben zugrundeliegenden physischen Host ausführen.
  • Ein Container kann ein Softwarepaket von Anwendungen, Konfigurationen und Abhängigkeiten sein, sodass die Anwendungen zuverlässig auf einer Rechenumgebung zu einer anderen laufen. Container können sich ein auf der Serverplattform installiertes Betriebssystem teilen und als isolierte Prozesse ablaufen. Ein Container kann ein Softwarepaket sein, das alles enthält, das die Software ausführen muss, wie etwa Systemwerkzeuge, Bibliotheken und Einstellungen. Container werden nicht wie herkömmliche Softwareprogramme installiert, wodurch sie von der anderen Software und dem Betriebssystem selbst isoliert werden können. Die isolierte Natur von Containern bietet mehrere Vorteile. Zuerst wird die Software in einem Container in unterschiedlichen Umgebungen gleich ausgeführt. Zum Beispiel kann ein Container, der PHP und MySQL beinhaltet, sowohl auf einem Linux®-Computer als auch auf einer Windows®-Maschine identisch laufen. Zweitens stellen Container zusätzliche Sicherheit bereit, da die Software das Host-Betriebssystem nicht beeinflusst. Obwohl eine installierte Anwendung Systemeinstellungen ändern und Ressourcen modifizieren kann, wie etwa das Windows-Register, kann ein Container nur Einstellungen innerhalb des Containers modifizieren.
  • Bei manchen Beispielen kann das System aus 2 Einzel-Root-E/A-Virtualisierung (SR-IOV) unterstützen. SR-IOV ist eine Spezifikation, die die Verwendung einer einzelnen physischen PCIe-Vorrichtung unter einem einzigen Root-Port beschreibt, um einem Hypervisor oder Gastbetriebssystem als mehrere separate physische Vorrichtungen zu erscheinen. SR-IOV verwendet physische Funktionen (PFs) und virtuelle Funktionen (VFs), um globale Funktionen für die SR-IOV-Vorrichtungen zu verwalten. PFs können PCIe-Funktionen sein, die in der Lage sind, die SR-IOV-Funktionalität zu konfigurieren und zu verwalten. Zum Beispiel kann eine PF eine PCIe-Vorrichtung konfigurieren oder steuern, und die PF hat Fähigkeit, Daten in die PCIe-Vorrichtung hinein und aus dieser heraus zu bewegen. Für einen Netzwerkadapter ist die PF beispielsweise eine PCIe-Funktion des Netzwerkadapters, der SR-IOV unterstützt. Die PF beinhaltet Fähigkeit, SR-IOV-Funktionalität des Netzwerkadapters zu konfigurieren und zu verwalten, wie etwa eine Virtualisierung zu ermöglichen und PCIe-VFs zu verwalten. Eine VF ist mit einer PCIe-PF auf dem Netzwerkadapter assoziiert, und die VF repräsentiert eine virtualisierte Instanz des Netzwerkadapters. Eine VF kann ihren eigenen PCIe-Konfigurationsraum aufweisen, kann aber eine oder mehrere physische Ressourcen auf dem Netzwerkadapter, wie etwa einen externen Netzwerkport, mit der PF und anderen PFs oder anderen VFs teilen.
  • Die Kerne 206 können eine Paketverarbeitung durchführen, einschließlich eines oder mehrerer der Folgenden: VNF 210, Netzwerkfunktionsvirtualisierung (NFV), softwaredefiniertes Networking (SDN), Evolved Packet Core (EPC) oder 5G-Netzwerk-Slicing. Einige beispielhafte Implementierungen von NFV sind in ETSI-Spezifikationen (ETSI: European Telecommunications Standards Institute) oder Open-Source-NFV-MANO (MANO: Management and Orchestration) der Open-Source-Mano(OSM)-Gruppe von ETSI beschrieben. VNF kann eine Dienstkette oder Sequenz virtualisierter Aufgaben beinhalten, die auf generischer konfigurierbarer Hardware ausgeführt werden, wie Firewalls, Domänennamensystem (DNS), Caching oder Netzwerkadressenübersetzung (NAT), und kann in virtualisierten Ausführungsumgebungen ausgeführt werden. VNFs können als eine Dienstkette miteinander verknüpft sein. Bei einigen Beispielen ist das EPC eine 3GPPspezifizierte Kernarchitektur zumindest für Long-Term-Evolution(LTE)-Zugriff. 5G-Netzwerk-Slicing kann ein Multiplexen virtualisierter und unabhängiger logischer Netzwerke auf derselben physischen Netzwerkinfrastruktur bereitstellen.
  • In einigen Beispielen kann die VNF 210 den Prozessor 230 dynamisch programmieren, um einen Verkehrsfluss basierend auf Regeln zu verarbeiten (z. B. Fallenlassen von Paketen bestimmter Flüsse, Entschlüsseln bei Eintritt, Verschlüsseln bei Austritt). Das System aus 2 kann eine Netzwerkschnittstelle (NIC) 250 verwenden, um Pakete unter Verwendung eines Netzwerkmediums zu übertragen oder zu empfangen. Ein Fluss kann eine Sequenz von Paketen sein, die zwischen zwei Endpunkten transferiert werden, was im Allgemeinen eine einzige Sitzung unter Verwenden eines bekannten Protokolls repräsentiert. Dementsprechend kann ein Fluss durch einen Satz definierter N Tupel identifiziert werden, und zu Routingzwecken kann ein Fluss durch Tupel identifiziert werden, die die Endpunkte, z. B. die Quell- und Zieladressen, identifizieren. Für inhaltsbasierte Dienste (z. B. Load Balancer (Lastausgleicher), Firewall, Eindringungsdetektionssystem usw.) können Flüsse mit einer feineren Granularität identifiziert werden, indem fünf oder mehr Tupel (z. B. Quelladresse, Zieladresse, IP-Protokoll, Transportschicht-Quellport und -Zielport) verwendet werden. Es wird erwartet, dass ein Paket in einem Fluss den gleichen Satz von Tupeln in dem Paket-Header aufweist. Ein Paket kann hierin verwendet werden, um sich auf verschiedene formatierte Sammlungen von Bits zu beziehen, die über ein Netzwerk gesendet werden können, wie etwa Ethernet-Frames, IP-Pakete, TCP-Segmente, UDP-Datagramme usw. Außerdem, wie in diesem Dokument verwendet, sind Bezugnahmen auf die Schichten L2, L3, L4 und L7 (oder Layer 2, Layer 3, Layer 4 und Layer 7) jeweils Bezugnahmen auf die zweite Datenverbindungsschicht, die dritte Netzwerkschicht, die vierte Transportschicht und die siebte Anwendungsschicht des OSI(Open System Interconnection)-Schichtmodells.
  • Der Prozessor 230 kann auf den Netzwerkschnittstellenmanager (NIM) 232 (oder die Paketspeicherungssteuerung) zugreifen, um das Senden von Verkehr zu der NIC 250 und das Empfangen von Verkehr von der NIC 250 über die EA 220 zu verwalten. Gemäß verschiedenen hierin beschriebenen Ausführungsformen kann der NIM 232 zumindest teilweise basierend auf einem oder mehreren von Folgendem verwalten, ob Inhalt in einem Puffer 233 oder einem Host-Speicher 204 gespeichert ist: Pufferraum hat wenig Platz, Daten haben eine höhere Latenz oder eine niedrigere Priorität, oder verfügbare Bandbreite durch eine Schnittstelle zwischen dem Puffer und dem Host-Speicher. Der NIM 232 kann Deskriptoren abfragen und lesen, die angeben, dass ein oder mehrere Pakete durch die Netzwerkschnittstelle 250 empfangen wurden. Der NIM 232 kann Empfangs- oder Übertragungsdeskriptoren basierend auf einem Speicherungsort jeweiliger Daten, die durch die NIC 250 empfangen werden, oder Inhalt oder Daten, die durch die NIC 250 übertragen werden sollen, selektiv modifizieren. Der Puffer 233 kann zum Beispiel ausreichend groß sein, um empfangene Daten zu speichern, die z. B. bei 500 Gbps verarbeitet werden, obwohl andere Datenempfangsraten unterstützt werden können. Bei einigen Beispielen kann der Puffer 233 Deskriptoren und Inhalt oder Daten für Verkehr, der von der NIC 250 empfangen wird oder durch die NIC 250 übertragen werden soll, speichern.
  • Ein Host-Schnittstellenmanager (HIM) 234 kann eine SR-IOV-Schnittstelle für die CPU 202 präsentieren, um auf den Prozessor 230 zuzugreifen. Die Puffer 235 können verwendet werden, um Daten vor der Verarbeitung oder nach der Verarbeitung zu speichern. Die Puffer 235 können bei manchen Beispielen als SRAM-Speicher implementiert werden. In manchen Beispielen sind der Puffer 233 und der Puffer 235 derselbe Puffer, auf den von einem beliebigen des HIM 234, NIM 232 oder einem beliebigen Offload-Prozessor zugegriffen werden kann. Verschiedene Offload-Prozessoren 238 können von dem Prozessor 230 verfügbar sein, wie etwa unter anderem Schnellverkehrspaketprozessor (FXP), ein Verkehrsmanager (TM) und eine Sicherheitskomponente (Sec) für die Verschlüsselungs- und Entschlüsselungsaktivitäten oder andere Beschleuniger oder Prozessoren. Ein Bus oder ein anderes Interconnect 236 kann verwendet werden, um Offload-Prozessoren kommunikativ mit dem NIM 232 und dem HIM 234 zu koppeln. Bei manchen Beispielen kann der Prozessor 230 in einem separaten Die als der der CPU 202 implementiert sein.
  • Die Netzwerkschnittstelle 250 kann Kommunikationen mit anderen Netzwerkelementen und Endpunktvorrichtungen bereitstellen. Ein beliebiges Kommunikationsprotokoll kann verwendet werden, wie etwa eines oder mehrere der Folgenden: Ethernet (IEEE 802.3), RDMA (Remote Direct Memory Access - Fern-Direktzugriffsspeicher), InfiniBand, FibreChannel, iWARP (Internet Wide Area RDMA Protocol), TCP (Transmission Control Protocol), UDP (User Datagram Protocol), QUIC (Quick UDP Internet Connections), RoCE (RDMA over Converged Ethernet), PCIe (Peripheral Component Interconnect), Intel QPI (QuickPath Interconnect), Intel UPI (Ultra Path Interconnect), IOSF (Intel On-Chip System Fabric), Omnipath, CXL (Compute Express Link), HyperTransport, Hochgeschwindigkeits-Fabric, NVLink, AMBA(Advanced Microcontroller Bus Architecture)-Interconnect, OpenCAPI, Gen-Z, CCIX (Cache Coherent Interconnect for Accelerators), 3GPP-LTE (Long Term Evolution) (4G), 3GPP-5G, Fabric-Schnittstelle und Variationen davon. Daten können unter Verwendung eines Protokolls, wie etwa NVMe-over-Fabrics (NVMe-oF) oder NVMe, in virtualisierte Speicherungsknoten kopiert oder gespeichert werden.
  • 3 stellt eine beispielhafte Empfangsoperation dar. In einigen Beispielen können empfangene Pakete einen Pfad 302 oder Pfad 310 durchlaufen. Gemäß Pfad 302 kopiert die NIC 250 für Pakete, die nicht durch den Prozessor 230 zu verarbeiten sind (z. B. bestimmte Paketflüsse), empfangene Pakete zu dem Systemspeicher 204. Zum Beispiel kann die NIC 250 eine DMA- oder RDMA-Operation durchführen, um das empfangene Paket (oder einen Teil davon) zu dem Systemspeicher 204 zu kopieren. Gemäß dem Pfad 310 sind Pakete durch den Prozessor 230 zu verarbeiten (z. B. bestimmte Paketflüsse), und die NIC 250 kopiert solche empfangenen Pakete zu dem Puffer 233. Zum Beispiel kann die NIC 250 eine DMA- oder RDMA-Operation durchführen, um das empfangene Paket (oder einen Teil davon) zu dem Puffer 233 zu kopieren. Nachdem ein oder mehrere Offload-Prozessoren 238 die assoziierte Verarbeitung an Teilen der empfangenen Pakete durchgeführt haben, werden verarbeitete Pakete im Puffer 235 gespeichert. Zum Beispiel kann der Prozessor 230 eine DMA- oder RDMA-Operation durchführen, um den verarbeiteten Inhalt vom Puffer 235 zu dem Systemspeicher 204 zu kopieren.
  • 4 stellt eine beispielhafte Empfangsoperation dar. In diesem Beispiel ist der Pfad 310 dargestellt und wird ein Offload-Prozessor 406 mit schneller Paketverarbeitung (FXP: Fast Packet Processing) verwendet. Die Steuerebenenanwendung (CPA: Control Plane Application) 412 kann die NIC 250 ein oder mehrere aus dem EA-Die 220, der CPU 202 und dem Prozessor 230 konfigurieren und mit diesen verbinden. Die NIC 250 kann Empfangsdeskriptoren für empfangene Pakete abschließen, indem sie eine Zieladresse in dem Deskriptor als einen Ort innerhalb des Puffers 233 des Prozessors 230 bereitstellt. Bei 310A kann der NIM 232 einen Deskriptor zur Aufnahme in einen Deskriptorring 404 sowie Daten zur Speicherung in dem Puffer 402 empfangen. Bei manchen Beispielen kann der NIM 232 empfangene Deskriptoren in ein internes Format des NIM umwandeln. Bei 310B kann der Prozessor 230 einen Zeiger auf die FXP 406 kopieren oder bereitstellen, um auf Daten des empfangenen Pakets oder der empfangenen Pakete von dem Puffer 233 zuzugreifen. In manchen Beispielen kann die FXP 406 unter Verwendung eines Zeigers auf Daten vom Puffer 233 zugreifen, die Daten verarbeiten und die Prozessdaten in den Puffer 233 speichern. In manchen Beispielen kann die FXP 406 die Daten in einen Zwischenpuffer (nicht gezeigt) kopieren, die Daten verarbeiten und die Prozessdaten in den Zwischenpuffer speichern. Bei 310C werden dem HIM 234 verarbeitete Daten zur Verfügung gestellt, indem die verarbeiteten Daten zu dem Puffer 235 kopiert werden oder ein Zeiger auf Daten in dem Zwischenpuffer oder Puffer 233 bereitgestellt wird. In einigen Beispielen können folglich Daten, die verarbeitet werden, von dem Puffer 233 zu dem Puffer 235 übertragen werden.
  • Eine virtuelle Vorrichtung (VDEV: Virtual Device) kann der VNF 210 eine Ethernet-Vorrichtung präsentieren. Bei 310D kann der HIM 234 verarbeitete Daten zu dem Puffer 410 (z. B. im Speicher 204) und einen assoziierten Deskriptor zu einem Deskriptorring 408 (z. B. im Speicher 204) kopieren. Bei manchen Beispielen kann der NIM 232 einen beliebigen assoziierten Deskriptor modifizieren, um einen Speicherungsort der verarbeiteten Pakete in einem Puffer im Speicher 204 zu identifizieren und die modifizierten Deskriptoren für den Zugriff durch die CPU 202 (z. B. einen oder mehrere Kerne) bereitzustellen. In diesem Beispiel werden modifizierte Deskriptoren und Daten im Puffer 402 im Speicher 204 für den Zugriff durch die VNF 210 bereitgestellt.
  • Falls Daten nach dem Verarbeiten empfangener Daten zu übertragen sind, können in einigen Beispielen die Daten im Puffer 233 gespeichert und nicht zu einem Puffer 410 des Speichers 204 kopiert werden. Zum Beispiel kann die VNF 210 eine Übertragung von Daten durch die NIC 250 vom Puffer 233 initiieren. Eine zusätzliche Verarbeitung kann vor einer Übertragung stattfinden, wie etwa Verschlüsselung oder Paket-Header-Bildung unter Verwendung von Offload-Prozessoren des Prozessors 230.
  • 5 stellt eine beispielhafte Übertragungsoperation dar. Bei manchen Beispielen kann eine Anwendungssoftware 501 oder die VNF 210 eine Priorität eines zu übertragenden Pakets konfigurieren und dem NIM 232 einen Übertragungsdeskriptor bereitstellen. Zum Beispiel kann eine Anwendung oder die VNF 210 (oder eine andere Software oder Hardware) einen Paketdeskriptor modifizieren, um eine Prioritätsstufe oder Latenz eines zu übertragenden Pakets zu spezifizieren. Eine Ziel-IP-Adresse oder eine Ziel-MAC-Adresse kann zum Beispiel mit einer Prioritätsstufe korrelieren, oder ein Virtuelles-Lokalnetzwerk(VLAN)-Tag kann eine Prioritätsstufe angeben. Bei 502A kann die CPU 202 (z. B. ein oder mehrere Kerne) bewirken, dass Daten durch eine DMA- oder RDMA-Operation zu dem Prozessor 230 zum Puffer 235 gesendet werden. Die CPU 202 kann einen Deskriptor für ein Paket an den Prozessor 230 bereitstellen und angeben, wo die zu übertragenden Daten gespeichert werden (z. B. in dem Puffer 235). Bei 502B kann eine FXP 506 auf die Daten zugreifen und diese verarbeiten. Die FXP 506 kann unter Verwendung eines Zeigers auf Daten vom Puffer 235 zugreifen, die Daten verarbeiten und die verarbeiteten Daten in den Puffer 235 speichern. In manchen Beispielen kann die FXP 506 die Daten in einen Zwischenpuffer (nicht gezeigt) kopieren, die Daten verarbeiten und die Prozessdaten in den Zwischenpuffer speichern.
  • Bei 502C kann die FXP 506 angeben, dass Daten verarbeitet und zum Übertragen verfügbar sind. Es wird angemerkt, dass, während das Beispiel zur Verwendung von FXP dient, eine beliebige andere Offload-Verarbeitung oder eine Reihe von Offload-Verarbeitungsoperationen stattfinden kann, sodass die Daten nach einer Reihe von Offload-Verarbeitungsschritten (z. B. Paketverarbeitung, Verschlüsselung und so weiter) zum Übertragen verfügbar sein können. Die FXP 506 kann Zugriff auf verarbeitete Daten bereitstellen, indem sie einen Zeiger auf einen Ort in einem Zwischenpuffer oder dem Puffer 235 bereitstellt. In manchen Beispielen kann die FXP 506 die verarbeiteten Daten zu dem Puffer 233 kopieren. In manchen Beispielen sind der Puffer 233 und der Puffer 235 derselbe Puffer, auf den von einem beliebigen des HIM 234, NIM 232 oder einem beliebigen Offload-Prozessor zugegriffen werden kann. In manchen Beispielen stellt der Offload-Prozessor (z. B. die FXP 406) Metadaten (z. B. Paketgröße, Paketpriorität) zur Verwendung durch den NIM 232 bereit, um zu bestimmen, wo die verarbeiteten Daten gespeichert werden sollen.
  • Bei manchen Beispielen kann der NIM 232 bestimmen, ob verarbeitete Paketdaten im Puffer 233 gespeichert werden sollen oder die verarbeiteten Daten im Host-Speicher 204 vor der Übertragung durch die NIC 250 gespeichert werden sollen. Zum Beispiel können Pakete mit niedriger Latenz oder hoher Priorität vor der Übertragung durch die NIC 250 im Puffer 233 gespeichert werden. Zum Beispiel können Pakete mit hoher Latenz oder niedriger Priorität vor der Übertragung durch die NIC 250 in dem Speicher 204 gespeichert werden. In einigen Fällen können, falls der Puffer 233 nicht genügend Platz aufweist oder sein Füllegrad jenseits einer Schwelle liegt, verarbeitete Daten vor der Übertragung durch die NIC 250 in dem Speicher 204 gespeichert werden. Die verfügbare Bandbreite einer Schnittstelle zwischen dem Prozessor 230 und dem Speicher 204 kann auch berücksichtigt werden, um zu bestimmen, ob Daten zu dem Speicher 204 kopiert werden sollen.
  • Während Zeiten mit niedrigem Verkehrsdurchsatz kann der NIM 232 entscheiden, Pakete innerhalb des Puffers 233 zur Übertragung zu halten. Mit zunehmender Verkehrsrate oder falls der verfügbare Raum in Puffer 233 beschränkt ist, kann der NIM 232 beginnen, Pakete zur Übertragung in dem Host-Speicher 204 zu platzieren und die Deskriptoren zu aktualisieren, um anzugeben, dass Daten in dem Speicher 204 gespeichert werden.
  • Eine Zeitdauer, während der Daten in dem Puffer 233 gespeichert werden, kann a priori unbekannt sein, da der NIM 232 möglicherweise nicht vorhersagt, wie lange die NIC 250 benötigen wird, um die Übertragungsaktion tatsächlich durchzuführen, und eine Benachrichtigung bereitzustellen, dass die Aktion beendet wurde. Von daher kann zur Bestimmung darüber, wie viel Pufferraum benötigt wird, eine Herausforderung sein. Manche NIC-Übertragungszeiten können charakterisiert bestimmt werden und die Größe des Puffers 233 kann bestimmt werden. Verschiedene NIC-Anbieter können jedoch unterschiedliche Übertragungszeitcharakteristiken aufweisen. Dementsprechend kann der Raum in dem Puffer 233 zur Verwendung für bevorstehende Übertragungsoperationen oder zum Erhalten von Raum in dem Puffer 233 priorisiert werden.
  • Bei 502D kann der NIM 232 einen Übertragungsdeskriptor aktualisieren, um anzugeben, ob Daten in einem Puffer 510 in dem Speicher 204 oder dem Puffer 233 gespeichert sind. Für verarbeitete Daten, die in dem Speicher 204 gespeichert werden sollen, können die Prozessoren 230 verarbeitete Daten zu dem Speicher 204 (z. B. reservierter Puffer durch den Vorrichtungstreiber für die Prozessoren 230) kopieren (z. B. DMA oder RDMA) und der NIM 232 kann den assoziierten Übertragungsdeskriptor mit Informationen abändern, einschließlich des Orts in dem Speicher 204, wo sich die Paketdaten befinden, und die NIC 250 benachrichtigen, dass es zu übertragende Daten gibt.
  • Die CPU 202 kann die NIC 250 initialisieren, um Deskriptoren vom Puffer 233 durch eine Koordination zwischen dem Treiber des Prozessors 230 und dem Treiber der NIC 250 abzuholen. Bei 502E kann die NIC 250 verarbeitete Daten basierend auf einem Deskriptorinhalt abrufen, der angibt, dass ein Ort von zu übertragenden Daten in dem Speicher 204 oder dem Puffer 233 gespeichert ist. In manchen Fällen, in denen der Puffer 233 verarbeitete Daten speichert, können die Prozessoren 230 verarbeitete Daten zu der NIC 250 kopieren (z. B. durch DMA oder RDMA). In manchen Fällen, in denen der Speicher 204 verarbeitete Daten speichert, kann die CPU 202 verarbeitete Daten zu der NIC 250 kopieren (z. B. DMA oder RDMA).
  • Ein zweimaliges Kopieren von Daten nach der Verarbeitung durch die Prozessoren 230 kann die Schnittstellenbandbreite zwischen dem Speicher 204 und dem Prozessor 230 verwenden und die Fähigkeit zum Übertragen von Daten verlangsamen, und kann die Leistungsfähigkeit nachteilig beeinflussen. Zwei PCIe-Transaktionen können zum Beispiel verwendet werden, um Daten zu dem Speicher 204 zu pushen und die Daten in die NIC 250 abzurufen. Im Gegensatz dazu kann der Zugriff auf verarbeitete Daten vom Puffer 233 lediglich eine PCIe-Transaktion verwenden, um Daten vom Speicher 204 zu dem Puffer 233 zu transferieren, und kann Latenz zum Übertragen von Daten reduzieren.
  • 6 stellt ein Beispiel für die Verwendung von Deskriptoren in Verbindung mit einer Übertragungsoperation dar. In diesem Beispiel beinhaltet der Deskriptorring 404 Deskriptoren, die sich entweder auf den Puffer 233, der durch den Prozessor 230 verwendet wird, oder auf den Puffer 510 in dem Speicher 204 beziehen. Die NIC 250 kann auf Deskriptoren von den Prozessoren 230 zugreifen, um zu bestimmen, ob Daten von dem Puffer 233 oder dem Puffer 510 abgerufen oder deren Verfügbarkeit angefordert werden soll. Unter Nutzung dieses hybriden Modells kann eine Leistungsfähigkeitsverbesserung mit einer hohen Rate erreicht werden, selbst wenn nur ein kleiner Prozentsatz von Verkehr vom Puffer 233 direkt zu der NIC 250 gesendet wird, anstatt eine zusätzliche Kopie oder DMA-Operation von Daten vom Speicher 204 zu der NIC 250.
  • Hierin bereitgestellte Beispiele sind nicht beschränkend und die Prozessoren 230 können als eine Zwischenvorrichtung verwendet werden, um Daten oder anderen Inhalt zu verarbeiten oder Daten oder anderen Inhalt zu erzeugen, die von einer beliebigen Hardwarevorrichtung neben einer Netzwerkschnittstelle, wie etwa einem beliebigen Hardwarebeschleuniger oder einer beliebigen netzwerkverbundenen Fernspeicherung, empfangen werden. Beispielsweise können die Prozessoren 230 ein Zwischenknoten unter mehreren Verarbeitungsknoten sein, und der NIM 232 kann verwalten, wo Daten nach der Verarbeitung durch die Prozessoren 230 gespeichert werden.
  • 7A stellt einen beispielhaften Prozess dar. Dieser Prozess kann von verschiedenen Ausführungsformen verwendet werden, um durch eine Speicherungssteuerung in einem Offload-Prozessor einen Deskriptor zu modifizieren, um anzugeben, wo Daten im Host-Speicher gespeichert werden. Bei 702 kann eine Netzwerkschnittstelle ein Paket empfangen und das Paket einem Puffer eines Offload-Prozessors bereitstellen. Ein HostSystem kann zum Beispiel die Netzwerkschnittstelle konfigurieren, um empfangene Pakete in einem Puffer des Offload-Prozessors zu speichern, wobei das empfangene Paket durch den Offload-Prozessor verarbeitet werden soll. Die Netzwerkschnittstelle kann einen Deskriptor für das empfangene Paket abschließen, um einen Speicherungsort des Pakets in einem Puffer des Offload-Prozessors zu identifizieren.
  • Bei 704 kann der Offload-Prozessor eine Verarbeitung an dem empfangenen Paket durchführen. Zum Beispiel kann eine an dem empfangenen Paket durchzuführende Offload-Verarbeitung durch eine Anwendung oder VNF oder andere Software oder Vorrichtung konfiguriert werden. Die Offload-Verarbeitung kann zum Beispiel eines oder mehrere von Folgendem beinhalten: Paket-Header-Verarbeitung, Prüfsummenvalidierung, Entschlüsselung, Zugriffssteuerliste (ACL), Firewall und so weiter.
  • Bei 706 kann die Paketspeicherungssteuerung den Deskriptor für das verarbeitete Paket und die verarbeiteten Paketinhalte zu einem Puffer im Systemspeicher transferieren. In einigen Fällen beinhaltet die Paketspeicherungssteuerung einen Netzwerkschnittstellenmanager. Bei 708 kann die Speicherungssteuerung den Deskriptor aktualisieren, um den Speicherungsort der verarbeiteten Paketinhalte in einem Puffersystemspeicher zu identifizieren.
  • In einigen Fällen, wie etwa, wenn verarbeitete Paketinhalte übertragen werden sollen, nachdem sie empfangen wurden (z. B. als Teil einer Dienstfunktionskette (SFC)), kann die Paketspeicherungssteuerung wählen, den verarbeiteten Inhalt im Puffer zu speichern und den verarbeiteten Inhalt nicht im Systemspeicher zu speichern. Eine VNF oder Anwendung kann einen Hinweis bereitstellen, dass bestimmte Paketinhalte übertragen werden sollen, und bei 708 kann die Paketspeicherungssteuerung einen Deskriptor aktualisieren, um anzugeben, dass sich ein Speicherungsort des verarbeiteten Inhalts in einem Puffer des Offload-Prozessors befindet, und den Deskriptor zu einer CPU bereitstellen. Wenn eine VNF oder eine andere Anwendung eine Paketübertragung anfordert, kann die Netzwerkschnittstelle einen Übertragungsdeskriptor lesen, der angibt, dass die Paketdaten in einem Offload-Prozessorpuffer gespeichert sind, und auf die Paketdaten vom Offload-Prozessorpuffer zugreifen.
  • 7B stellt einen beispielhaften Prozess dar. Dieser Prozess kann von verschiedenen Ausführungsformen verwendet werden, um zu bestimmen, ob zu übertragende Daten in einem Puffer eines Offload-Prozessors oder einem Host-Speicher gespeichert werden sollen. Bei 750 wird eine Paketübertragungsanforderung an einem Offload-Prozessor empfangen. Beispielsweise kann eine VNF oder Anwendung einen Deskriptor für ein Paket bereitstellen und angeben, wo die zu übertragenden Daten im Systemspeicher gespeichert sind. Bei 752 kann ein Offload-Prozessor auf zu übertragende Daten zugreifen und diese verarbeiten. Zum Beispiel kann der Offload-Prozessor an den empfangenen Daten eines oder mehrere von Folgendem durchführen: Paketverarbeitung (z. B. Header-Parsing, Flussidentifikation, Prüfsummenvalidierung, Verschlüsselung, sicheres Tunneln (z. B. Transport Layer Security (TLS) oder Secure Sockets Layer (SSL)) oder andere Operationen.
  • Bei 754 kann eine Paketspeicherungssteuerung nach dem Verarbeiten der Daten bestimmen, ob verarbeitete Paketdaten in einem Puffer des Offload-Prozessors gespeichert werden sollen oder die verarbeiteten Daten vor der Übertragung in dem Host-Speicher gespeichert werden sollen. Zum Beispiel können Pakete mit niedriger Latenz oder hoher Priorität in einem Puffer des Offload-Prozessors gespeichert werden, wohingegen Pakete mit hoher Latenz oder niedriger Priorität in dem Systemspeicher gespeichert werden können. In einigen Fällen können, falls der Puffer des Offload-Prozessors nicht genügend Platz aufweist oder sein Füllegrad jenseits einer Schwelle liegt, verarbeitete Daten in dem Systemspeicher gespeichert werden. Die verfügbare Bandbreite einer Schnittstelle zwischen dem Offload-Prozessor und dem Systemspeicher kann auch berücksichtigt werden, um zu bestimmen, ob Daten zu dem Systemspeicher kopiert werden sollen. Falls die Paketspeicherungssteuerung bestimmt, verarbeitete Daten zu dem Systemspeicher zu kopieren, kann 756 folgen. Falls die Paketspeicherungssteuerung bestimmt, verarbeitete Daten nicht zu dem Systemspeicher zu kopieren, kann 760 folgen.
  • Bei 756 können Daten durch den Offload-Prozessor zu dem Systemspeicher kopiert werden. Bei 760 kann die Paketspeicherungssteuerung einen Übertragungsdeskriptor aktualisieren, um anzugeben, ob Daten in einem Puffer des Offload-Prozessors oder in einem Systemspeicher gespeichert sind. Bei 762 kann die Netzwerkschnittstelle einen Übertragungsdeskriptor von einem Deskriptorring der Paketspeicherungssteuerung lesen und auf die Daten zur Übertragung zugreifen.
  • 8 stellt ein System dar. Das System kann hierin beschriebene Ausführungsformen verwenden, um zu bestimmen, wo Paketdaten nach dem Empfang durch eine Netzwerkschnittstelle oder vor der Übertragung durch eine Netzwerkschnittstelle gespeichert werden sollen. Das System 800 beinhaltet einen Prozessor 810, der eine Verarbeitung, Betriebsverwaltung und Ausführung von Anweisungen für das System 800 bereitstellt. Der Prozessor 810 kann eine beliebige Art von Mikroprozessor, Zentralverarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU), Verarbeitungskern oder andere Verarbeitungshardware zum Bereitstellen von Verarbeitung für das System 800 oder eine Kombination von Prozessoren beinhalten. Der Prozessor 810 steuert den Gesamtbetrieb des Systems 800 und kann ein(e) oder mehrere programmierbare Allzweck- oder Spezialmikroprozessoren, Digitalsignalprozessoren (DSPs), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Logikvorrichtungen (PLDs) oder dergleichen oder eine Kombination solcher Vorrichtungen sein oder beinhalten.
  • In einem Beispiel beinhaltet das System 800 eine Schnittstelle 812, die mit dem Prozessor 810 gekoppelt ist, die eine Schnittstelle mit höherer Geschwindigkeit oder eine Schnittstelle mit hohem Durchsatz für Systemkomponenten repräsentieren kann, die Verbindungen mit höherer Bandbreite benötigen, wie etwa das Speichersubsystem 820 oder die Grafikschnittstellenkomponenten 840 oder die Beschleuniger 842. Die Schnittstelle 812 repräsentiert eine Schnittstellenschaltung, die eine eigenständige Komponente sein oder auf einem Prozessor-Die integriert sein kann. Wo vorhanden, ist die Grafikschnittstelle 840 mit Grafikkomponenten verknüpft, um einem Benutzer des Systems 800 eine visuelle Anzeige bereitzustellen. In einem Beispiel kann die Grafikschnittstelle 840 eine HD(High Definition)-Anzeige ansteuern, die einem Benutzer eine Ausgabe liefert. High-Definition kann sich auf eine Anzeige mit einer Pixeldichte von ungefähr 100 PPI (Pixel pro Zoll) oder mehr beziehen und kann Formate wie etwa Full-HD (z. B. 1080p), Retina-Displays, 4K (Ultra-High-Definition oder UHD) oder andere beinhalten. In einem Beispiel kann die Anzeige eine Touchscreen-Anzeige enthalten. In einem Beispiel erzeugt die Grafikschnittstelle 840 eine Anzeige basierend auf Daten, die in dem Speicher 830 gespeichert sind, oder basierend auf Operationen, die durch den Prozessor 810 ausgeführt werden, oder beides. In einem Beispiel erzeugt die Grafikschnittstelle 840 eine Anzeige basierend auf Daten, die in dem Speicher 830 gespeichert sind, oder basierend auf Operationen, die durch den Prozessor 810 ausgeführt werden, oder beides.
  • Die Beschleuniger 842 können eine programmierbare und/oder Festfunktions-Offload-Engine sein, auf die ein Prozessor 810 oder eine Netzwerkschnittstelle 850 zugreifen kann oder die durch diese(n) verwendet werden kann. Ein Beschleuniger kann zum Beispiel einen oder mehrere hierin beschriebene Offload-Prozessoren beinhalten. Ein Beschleuniger unter den Beschleunigern 842 kann zum Beispiel Komprimierungsfähigkeit (DC-Fähigkeit), Kryptographiedienste, wie etwa Public-Key-Verschlüsselung (PKE), Chiffrierung, Hash-/Authentifizierungsfähigkeiten, Entschlüsselung oder andere Fähigkeiten oder Dienste bereitstellen. Bei einigen Ausführungsformen stellt zusätzlich oder alternativ ein Beschleuniger unter den Beschleunigern 842 Feldauswahlsteuerungsfähigkeiten, wie hierin beschrieben, bereit. In einigen Fällen können Beschleuniger 842 in einen CPU-Socket (zum Beispiel einen Verbinder zu einer Hauptplatine oder Leiterplatte, die eine CPU beinhaltet und eine elektrische Schnittstelle mit der CPU bereitstellt) integriert sein. Die Beschleuniger 842 können zum Beispiel einen Einzel- oder Mehrkernprozessor, eine Grafikverarbeitungseinheit, einen Einzel- oder Mehrebenen-Cache einer logischen Ausführungseinheit, Funktionseinheiten, die zum unabhängigen Ausführen von Programmen oder Threads verwendet werden können, anwendungsspezifische integrierte Schaltungen (ASICs), Neuronalnetzwerkprozessoren (NNPs), programmierbare Steuerlogik und programmierbare Verarbeitungselemente, wie etwa feldprogrammierbare Gate-Arrays (FPGAs) beinhalten. Die Beschleuniger 842 können mehrere neuronale Netzwerke, CPUs, Prozessorkerne, Allzweck-Grafikverarbeitungseinheiten oder Grafikverarbeitungseinheiten bereitstellen, die zur Verwendung durch Künstliche-Intelligenz(KI)- oder Maschinenlern(ML)-Modelle bereitgestellt werden können. Das KI-Modell kann zum Beispiel eines oder eine Kombination von Folgendem verwenden oder beinhalten: ein bestärkendes Lernschema, Q-Lernschema, Deep-Q-Learning oder Asynchronous Advantage Actor-Critic (A3C), kombinatorisches neuronales Netzwerk, rekurrentes kombinatorisches neuronales Netzwerk oder ein anderes KI- oder ML-Modell. Mehrere neuronale Netzwerke, Prozessorkerne oder Grafikverarbeitungseinheiten können zur Verwendung durch KI- oder ML-Modelle bereitgestellt werden.
  • Das Speicheruntersystem 820 repräsentiert den Hauptspeicher des Systems 800 und stellt eine Speicherung für Code bereit, der durch den Prozessor 810 ausgeführt werden soll, oder Datenwerte, die beim Ausführen einer Routine verwendet werden sollen. Das Speichersubsystem 820 kann eine oder mehrere Speichervorrichtungen 830, wie etwa Nurlesespeicher (ROM), Flash-Speicher, eine oder mehrere Vielfalten von Direktzugriffsspeicher (RAM), wie etwa DRAM, oder andere Speichervorrichtungen oder eine Kombination solcher Vorrichtungen beinhalten. Der Speicher 830 speichert und hostet unter anderem das Betriebssystem (OS) 832, um eine Softwareplattform zur Ausführung von Anweisungen in dem System 800 bereitzustellen. Zusätzlich dazu können die Anwendungen 834 auf der Softwareplattform des OS 832 aus dem Speicher 830 ausgeführt werden. Die Anwendungen 834 repräsentieren Programme, die ihre eigene Betriebslogik zum Durchführen der Ausführung einer oder mehrerer Funktionen aufweisen. Die Prozesse 836 repräsentieren Agenten oder Routinen, die dem OS 832 oder einer oder mehreren Anwendungen 834 oder einer Kombination Hilfsfunktionen bereitstellen. Das OS 832, die Anwendungen 834 und die Prozesse 836 stellen Softwarelogik bereit, um Funktionen für das System 800 bereitzustellen. In einem Beispiel enthält das Speicheruntersystem 820 eine Speichersteuerung 822, die eine Speichersteuerung zum Erzeugen und Ausgeben von Befehlen an den Speicher 830 ist. Es versteht sich, dass die Speichersteuerung 822 ein physischer Teil des Prozessors 810 oder ein physischer Teil der Schnittstelle 812 sein könnte. Beispielsweise kann die Speichersteuerung 822 eine integrierte Speichersteuerung sein, die in eine Schaltung mit dem Prozessor 810 integriert ist.
  • Obwohl dies nicht speziell veranschaulicht ist, versteht es sich, dass das System 800 einen oder mehrere Busse oder Bussysteme zwischen Vorrichtungen beinhalten kann, wie etwa einen Speicherbus, einen Grafikbus, Schnittstellenbusse oder andere. Busse oder andere Signalleitungen können Komponenten kommunikativ oder elektrisch miteinander koppeln oder die Komponenten sowohl kommunikativ als auch elektrisch koppeln. Busse können physische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Steuerungen oder eine andere Schaltungsanordnung oder eine Kombination beinhalten. Busse können zum Beispiel einen Systembus und/oder einen PCI-Bus (PCI: Peripheral Component Interconnect) und/oder einen Hyper Transport- oder ISA-Bus (ISA: Industriestandard Architecture) und/oder einen SCSI-Bus (SCSI: Small Computer System Interface) und/oder einen USB (USB: Universal Serial Bus) und/oder einen IEEE-Standard-1394-Bus (IEEE: Institute of Electrical and Electronics Engineers) (Firewire) beinhalten.
  • In einem Beispiel beinhaltet das System 800 eine Schnittstelle 814, die mit der Schnittstelle 812 gekoppelt werden kann. In einem Beispiel repräsentiert die Schnittstelle 814 eine Schnittstellenschaltung, die eigenständige Komponenten und integrierte Schaltungsanordnungen beinhalten kann. In einem Beispiel sind mehrere Benutzerschnittstellenkomponenten oder Peripheriekomponenten oder beide mit der Schnittstelle 814 gekoppelt. Die Netzwerkschnittstelle 850 bietet dem System 800 die Möglichkeit, mit entfernten Vorrichtungen (z. B. Servern oder anderen Rechenvorrichtungen) über ein oder mehrere Netzwerke zu kommunizieren. Die Netzwerkschnittstelle 850 kann einen Ethernet-Adapter, drahtlose Verbindungskomponenten, Zellularnetzwerkverbindungskomponenten, USB (Universal Serial Bus) oder andere auf drahtgebundenen oder drahtlosen Standards basierende oder proprietäre Schnittstellen beinhalten. Die Netzwerkschnittstelle 850 kann Daten an eine Vorrichtung, die sich im selben Datenzentrum oder Rack befindet, oder eine entfernte Vorrichtung übertragen, was das Senden von im Speicher gespeicherten Daten beinhalten kann. Die Netzwerkschnittstelle 850 kann Daten von einer entfernten Vorrichtung empfangen, was das Speichern empfangener Daten in einem Speicher beinhalten kann. Verschiedene Ausführungsformen können in Verbindung mit der Netzwerkschnittstelle 850, dem Prozessor 810 und dem Speichersubsystem 820 verwendet werden.
  • In einem Beispiel beinhaltet das System 800 eine oder mehrere Eingabe/Ausgabe(E/A)-Schnittstellen 860. Die E/A-Schnittstelle 860 kann eine oder mehrere Schnittstellenkomponenten beinhalten, über die ein Benutzer mit dem System 800 interagiert (z. B. Audioschnittstellen, alphanumerische, taktile/berührungsempfindliche oder andere Schnittstellen). Die Peripherieschnittstelle 870 kann eine beliebige Hardwareschnittstelle beinhalten, die oben nicht speziell erwähnt wird. Peripheriegeräte beziehen sich im Allgemeinen auf Vorrichtungen, die eine abhängige Verbindung zum System 800 herstellen. Eine abhängige Verbindung ist eine Verbindung, bei der das System 800 die Softwareplattform oder Hardwareplattform oder beide bereitstellt, auf der die Operation ausgeführt wird und mit der ein Benutzer interagiert.
  • In einem Beispiel beinhaltet das System 800 ein Speicherungsuntersystem 880 zum Speichern von Daten auf eine nichtflüchtige Weise. Bei einem Beispiel können sich in bestimmten Systemimplementierungen zumindest bestimmte Komponenten der Speicherung 880 mit Komponenten des Speichersubsystems 820 überlappen. Das Speicherungssubsystem 880 beinhaltet eine oder mehrere Speicherungsvorrichtungen 884, die ein beliebiges herkömmliches Medium zum Speichern großer Datenmengen auf nichtflüchtige Weise sein oder beinhalten können, wie etwa eine oder mehrere magnetische, Solid-State- oder optische Platten oder eine Kombination davon. Die Speicherung 884 hält Code oder Anweisungen und Daten 886 in einem persistenten Zustand (zum Beispiel wird der Wert trotz Unterbrechung der Stromversorgung des Systems 800 beibehalten). Die Speicherung 884 kann allgemein als ein „Speicher“ angesehen werden, obwohl der Speicher 830 typischerweise der Ausführungs- oder Betriebsspeicher ist, um dem Prozessor 810 Anweisungen bereitzustellen. Wohingegen die Speicherung 884 nichtflüchtig ist, kann der Speicher 830 flüchtigen Speicher beinhalten (zum Beispiel ist der Wert oder Zustand der Daten unbestimmt, falls die Stromversorgung zu dem System 800 unterbrochen wird). Bei einem Beispiel beinhaltet das Speicherungssubsystem 880 eine Steuerung 882 zum Bilden einer Schnittstelle mit der Speicherung 884. Bei einem Beispiel ist die Steuerung 882 ein physisches Teil der Schnittstelle 814 oder des Prozessors 810 oder kann Schaltungen oder Logik sowohl im Prozessor 810 als auch in der Schnittstelle 814 beinhalten.
  • Ein flüchtiger Speicher ist ein Speicher, dessen Zustand (und damit die in ihm gespeicherten Daten) unbestimmt ist, wenn die Stromversorgung der Vorrichtung unterbrochen wird. Dynamischer flüchtiger Speicher erfordert ein Auffrischen der in der Vorrichtung gespeicherten Daten, um einen Zustand beizubehalten. Ein Beispiel für dynamischen flüchtigen Speicher beinhaltet DRAM (Dynamic Random Access Memory) oder irgendeine Variante, wie etwa synchronen DRAM (SDRAM). Ein anderes Beispiel für flüchtigen Speicher beinhaltet einen Cache. Ein Speichersubsystem, wie hierin beschrieben, kann mit einer Anzahl von Speichertechnologien kompatibel sein, wie etwa mit DDR3 (Double Data Rate Version 3, Originalversion von JEDEC (Joint Electronic Device Engineering Council) am 27. Juni 2007). DDR4 (DDR Version 4, anfängliche Spezifikation veröffentlicht im September 2012 von JEDEC), DDR4E (DDR Version 4), LPDDR3 (Low Power DDR Version 3, JESD209-3B, August 2013 von JEDEC), LPDDR4) LPDDR Version 4, JESD209-4, ursprünglich veröffentlicht von JEDEC im August 2014), WIO2 (Wide Input/Output Version 2, JESD229-2, ursprünglich veröffentlicht von JEDEC im August 2014, HBM (High Bandwidth Memory, JESD325, ursprünglich veröffentlicht von JEDEC im Oktober 2013, LPDDR5 (gegenwärtig diskutiert von JEDEC), HBM2 (HBM Version 2), gegenwärtig diskutiert von JEDEC, oder andere oder Kombinationen von Speichertechnologien und Technologien basierend auf Ableitungen oder Erweiterungen derartiger Spezifikationen.
  • Eine Nichtflüchtiger-Speicher(NVM)-Vorrichtung ist ein Speicher, dessen Zustand bestimmt ist, selbst wenn die Stromversorgung zu der Vorrichtung unterbrochen wird. Bei einer Ausführungsform kann die NVM-Vorrichtung eine blockadressierbare Speichervorrichtung wie etwa NAND-Technologien oder insbesondere einen NAND-Flash-Speicher mit mehreren Schwellenpegeln (z. B. eine Zelle mit einem Niveau („SLC“), eine Zelle mit mehreren Niveaus („MLC“), eine Zelle mit vier Niveaus („QLC“), eine Zelle mit drei Niveaus („TLC“) oder eine andere NAND) umfassen. Eine NVM-Vorrichtung kann auch eine byteadressierbare dreidimensionale Kreuzungspunktspeichervorrichtung oder eine andere byteadressierbare NVM-Vorrichtung (auch als persistenter Speicher bezeichnet) umfassen, wie etwa ein- oder mehrstufige Phasenwechselspeicher (PCM) oder Phasenwechselspeicher mit Switch (PCMS), NVM-Vorrichtungen, die Chalkogenid-Phasenwechselmaterial verwenden (zum Beispiel Chalkogenidglas), resistiven Speicher einschließlich Metalloxid-Basis, Sauerstoffleerstellen-Basis und Conductive Bridge Random Access Memory-RAM (CB-RAM), Nanodrahtspeicher, ferroelektrischen Direktzugriffsspeicher (FeRAM, FRAM), magneto-resistiven Direktzugriffsspeicher (MRAM), der Memristortechnologie beinhaltet, Spintransferdrehmoment(STT)-MRAM, eine Spintronic-Magnetic-Junction-Memory-basierte Vorrichtung, eine Magnetic Tunneling Junction-basierte Vorrichtung (MTJ-basierte Vorrichtung), eine DW- (Domain Wall) und SOT(Spin Orbit Transfer)-basierte Vorrichtung, eine Thyristor-basierte Speichervorrichtung oder eine Kombination beliebiger der obigen oder anderer Speicher.
  • Eine (nicht dargestellte) Leistungsquelle stellt Leistung an die Komponenten des Systems 800 bereit. Genauer gesagt, verbindet sich die Leistungsquelle typischerweise mit einer oder mehreren Leistungsversorgungen in dem System 800, um den Komponenten des Systems 800 Leistung bereitzustellen. Bei einem Beispiel beinhaltet die Leistungsversorgung einen AC/DC(Wechselstrom zu Gleichstrom)-Adapter zum Einstecken in eine Wandsteckdose. Eine solche AC-Leistungsquelle kann eine erneuerbare Energiequelle (z. B. Solarstrom) sein. In einem Beispiel beinhaltet die Leistungsquelle eine DC-Leistungsquelle, wie etwa einen externen AC/DC-Wandler. In einem Beispiel beinhaltet eine Leistungsquelle oder Leistungsversorgung Drahtlosladehardware zum Laden über die Nähe zu einem Ladefeld. In einem Beispiel kann die Leistungsquelle eine interne Batterie, eine Wechselstromversorgung, eine bewegungsbasierte Leistungsversorgung, eine Solarstromversorgung oder eine Brennstoffzellenquelle beinhalten.
  • In einem Beispiel kann das System 800 unter Verwendung miteinander verbundener Rechen-Sleds von Prozessoren, Speichern, Speicherungen, Netzwerkschnittstellen und anderen Komponenten implementiert werden. Es können Hochgeschwindigkeits-Interconnects verwendet werden, wie etwa PCIe, Ethernet oder optische Interconnects (oder eine Kombination davon).
  • Ausführungsformen hierin können in verschiedenen Arten von Rechen- und Networking-Geräten implementiert werden, wie etwa Switches, Router, Racks und Blade-Server, wie etwa jenen, die in einem Datenzentrum und/oder einer Serverfarmumgebung eingesetzt werden. Die in Datenzentren und Serverfarmen verwendeten Server umfassen gereihte Serverkonfigurationen, wie rackbasierte Server oder Blade-Server. Diese Server stehen über verschiedene Netzwerkbereitstellungen miteinander in Kommunikation, wie etwa Partitionssätze von Servern in Local Area Networks (LANs) mit geeigneten Schalt- und Routingeinrichtungen zwischen den LANs, um ein privates Intranet zu bilden. Cloud-Hosting-Einrichtungen können zum Beispiel typischerweise große Datenzentren mit einer Vielzahl von Servern einsetzen. Ein Blade umfasst eine separate Rechenplattform, die dazu konfiguriert ist, Servertyp-Funktionen durchzuführen, das heißt einen „Server-on-a-Card“. Dementsprechend beinhaltet jedes Blade Komponenten, die bei herkömmlichen Servern üblich sind, einschließlich einer Hauptleiterplatte (Hauptplatine), die interne Verdrahtungen (z. B. Busse) zum Koppeln geeigneter integrierter Schaltungen (ICs) bereitstellt, und anderer Komponenten, die auf der Platine montiert sind.
  • 9 bildet eine Umgebung 900 ab, die mehrere Rechen-Racks 902 beinhaltet, die jeweils einen Top of Rack (ToR)-Switch 904, einen Pod-Manager 906 und mehrere gepoolte Systemeinschübe beinhalten. Die Umgebung kann hierin beschriebene Ausführungsformen verwenden, um zu bestimmen, wo Paketdaten nach dem Empfang durch eine Netzwerkschnittstelle oder vor der Übertragung durch eine Netzwerkschnittstelle gespeichert werden sollen. Allgemein können die gepoolten Systemeinschübe gepoolte Recheneinschübe und gepoolte Speicherungseinschübe beinhalten. Optional können die gepoolten Systemeinschübe auch gepoolte Speichereinschübe und gepoolte Eingabe/Ausgabe(E/A)-Einschübe beinhalten. Bei der veranschaulichten Ausführungsform beinhalten die gepoolten Systemeinschübe einen gepoolten Intel®-XEON®-Computereinschub 908 und einen gepoolten Intel®-ATOM™-Recheneinschub 910, einen gepoolten Speicherungseinschub 912, einen gepoolten Speichereinschub 914 und einen gepoolten E/A-Einschub 916. Jeder der gepoolten Systemeinschübe ist über einen Hochgeschwindigkeitslink 918, wie etwa einen 40-Gigabit/Sekunde(Gb/s)- oder 100-Gb/s-Ethernet-Link oder einen optischen-Silizium-Photonik(SiPh)-Link mit 100+ Gb/s, mit dem ToR-Switch 904 verbunden. In einer Ausführungsform umfasst der Hochgeschwindigkeitslink 918 einen optischen SiPh-Link mit 800 Gb/s.
  • Mehrere der Rechen-Racks 902 können über ihre ToR-Switches 904 (z. B. mit einem Pod-Level-Switch oder Datenzentrum-Switch) miteinander verbunden sein, wie durch Verbindungen mit einem Netzwerk 920 veranschaulicht. In manchen Ausführungsformen werden Gruppen von Rechen-Racks 902 über einen oder mehrere Pod-Manager 906 als separate Pods verwaltet. In einer Ausführungsform wird ein einzelner Pod-Manager verwendet, um alle Racks im Pod zu verwalten. Alternativ dazu können verteilte Pod-Manager für Pod-Management-Operationen verwendet werden.
  • Die Umgebung 900 beinhaltet ferner eine Verwaltungsschnittstelle 922, die zum Verwalten verschiedener Aspekte der Umgebung verwendet wird. Dies beinhaltet das Verwalten der Rack-Konfiguration mit entsprechenden Parametern, die als Rack-Konfigurationsdaten 924 gespeichert sind.
  • 10 stellt eine Netzwerkschnittstelle dar, die Ausführungsformen verwenden kann oder durch Ausführungsformen verwendet werden kann. Verschiedene hierin beschriebene Ausführungsformen können verwendet werden, um zu bestimmen, wo Paketdaten nach dem Empfang durch eine Netzwerkschnittstelle oder vor der Übertragung durch eine Netzwerkschnittstelle gespeichert werden sollen. Die Netzwerkschnittstelle 1000 kann einen Sendeempfänger 1002, Prozessoren 1004, eine Sendewarteschlange 1006, eine Empfangswarteschlange 1008, einen Speicher 1010 und eine Busschnittstelle 1012 und eine DMA-Engine 1026 beinhalten. Der Sendeempfänger 1002 kann in der Lage sein, Pakete in Übereinstimmung mit den geltenden Protokollen, wie etwa Ethernet, wie in IEEE 802.3 beschrieben, zu empfangen und zu übertragen, obwohl andere Protokolle verwendet werden können. Der Sendeempfänger 1002 kann Pakete von und zu einem Netzwerk über ein Netzwerkmedium (nicht abgebildet) empfangen und übertragen. Der Sendeempfänger 1002 kann eine Bitübertragungsschicht(PHY)-Schaltungsanordnung 1014 und eine Medienzugriffssteuerung(MAC)-Schaltungsanordnung 1016 beinhalten. Die PHY-Schaltungsanordnung 1014 kann eine (nicht gezeigte) Codierungs- und Decodierungsschaltungsanordnung zum Codieren und Decodieren von Datenpaketen gemäß gültigen Bitübertragungsschichtspezifikationen oder -standards beinhalten. Die MAC-Schaltungsanordnung 1016 kann dazu konfiguriert sein, zu übertragende Daten zu Paketen zu assemblieren, die Ziel- und Quelladressen zusammen mit Netzwerksteuerinformationen und Fehlerdetektions-Hash-Werten beinhalten. Die MAC-Schaltungsanordnung 1016 kann dazu ausgelegt sein, MAC-Header empfangener Pakete durch Verifizieren von Datenintegrität zu verarbeiten, Präambeln und Auffüllung zu entfernen und Paketinhalt zur Verarbeitung durch höhere Schichten bereitzustellen.
  • Die Prozessoren 1004 können eine beliebige Kombination von Folgendem sein: Prozessor, Kern, Grafikverarbeitungseinheit (GPU), feldprogrammierbares Gate-Array (FPGA), anwendungsspezifische integrierte Schaltung (ASIC) oder eine andere programmierbare Hardwarevorrichtung, die Programmieren der Netzwerkschnittstelle 1000 ermöglichen. Die Prozessoren 1004 können zum Beispiel die Zuweisung oder Freigabe von Zwischenwarteschlangen bereitstellen. Zum Beispiel kann eine „Smart-Netzwerkschnittstelle“ Paketverarbeitungsfähigkeiten in der Netzwerkschnittstelle unter Verwendung von Prozessoren 1004 bereitstellen.
  • Ein Paketzuweiser 1024 kann eine Verteilung empfangener Pakete zur Verarbeitung durch mehrere CPUs oder Kerne unter Verwendung von hierin beschriebener Zeitschlitzzuweisung oder RSS bereitstellen. Wenn der Paketzuweiser 1024 RSS verwendet, kann der Paketzuweiser 1024 einen Hash berechnen oder eine andere Bestimmung basierend auf Inhalten eines empfangenen Pakets vornehmen, um zu bestimmen, welche CPU oder welcher Kern ein Paket verarbeiten soll.
  • Eine Interrupt-Koaleszenz 1022 kann eine Interrupt-Moderation durchführen, wobei die Netzwerkschnittstellen-Interrupt-Koaleszenz 1022 darauf wartet, dass mehrere Pakete eintreffen oder dass ein Timeout abläuft, bevor sie ein Interrupt für das Hostsystem erzeugt, um ein oder mehrere empfangene Pakete zu verarbeiten. Empfangssegmentkoaleszenz (Receive Segment Coalescing - RSC) kann von der Netzwerkschnittstelle 1000 ausgeführt werden, wodurch Teile eingehender Pakete zu Segmenten eines Pakets kombiniert werden. Die Netzwerkschnittstelle 1000 stellt dieses koaleszierte Paket zu einer Anwendung bereit.
  • Die Direktspeicherzugriff(DMA)-Engine 1026 kann einen Paket-Header, Paketnutzdaten und/oder einen Deskriptor direkt vom Host-Speicher zur Netzwerkschnittstelle kopieren oder umgekehrt, anstatt das Paket in einen Zwischenpuffer am Host zu kopieren und dann eine andere Kopieroperation vom Zwischenpuffer zum Zielpuffer zu verwenden.
  • Der Speicher 1010 kann eine beliebige Art von flüchtiger oder nichtflüchtiger Speichervorrichtung sein und kann eine beliebige Warteschlange oder Anweisungen speichern, die zum Programmieren der Netzwerkschnittstelle 1000 verwendet werden. Die Sendewarteschlange 1006 kann Daten oder Referenzen zu Daten zur Übertragung durch die Netzwerkschnittstelle beinhalten. Die Empfangswarteschlange 1008 kann Daten oder Referenzen zu Daten beinhalten, die von der Netzwerkschnittstelle von einem Netzwerk empfangen wurden. Die Deskriptorwarteschlangen 1020 können Deskriptoren beinhalten, die Daten oder Pakete in der Sendewarteschlange 1006 oder Empfangswarteschlange 1008 referenzieren. Die Busschnittstelle 1012 kann eine Schnittstelle mit der Host-Vorrichtung (nicht abgebildet) bereitstellen. Zum Beispiel kann die Busschnittstelle 1012 mit der Peripherieanschluss-Peripheral Component Interconnect(PCI)-, PCI-Express-, PCI-x-, Serial-ATA(SATA)- und/oder Universal-Serial-Bus(USB)-kompatiblen Schnittstelle kompatibel sein (obwohl andere Verbindungsstandards verwendet werden können).
  • Bei manchen Beispielen können die Netzwerkschnittstelle und andere hierin beschriebene Ausführungsformen in Verbindung mit einer Basisstation (z. B. 3G, 4G, 5G und so weiter), einer Makrobasisstation (z. B. 5G-Netze), einer Pikostation (z. B. einem IEEE 802.11-kompatiblen Zugangspunkt), einer Nanostation (z. B. für Punkt-zu-MultiPunkt(PtMP)-Anwendungen), Vor-Ort-Datenzentren, externe Datenzentren, Edge-Netzwerkelemente, Fog-Netzwerkelemente und/oder hybride Datenzentren (z. B. Datenzentren, die Virtualisierungs-, Cloud- und Software-definiertes Networking verwenden, um Anwendungsarbeitslasten über physische Datenzentren und verteilte Multi-Cloud-Umgebungen zu liefern) verwendet werden.
  • Verschiedene Beispiele können unter Verwendung von Hardwareelementen, Softwareelementen oder einer Kombination beider implementiert werden. Bei manchen Beispielen können Hardwareelemente Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktivitäten und so weiter), integrierte Schaltungen, ASICs, PLDs, DSPs, FPGAs, Speichereinheiten, Logikgatter, Register, Halbleitervorrichtung, Chips, Mikrochips, Chipsätze und so weiter beinhalten. Bei manchen Beispielen können Softwareelemente Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, APIs, Befehlssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Worte, Werte, Symbole oder eine beliebige Kombination davon beinhalten. Das Bestimmen, ob ein Beispiel unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert wird, kann gemäß einer beliebigen Anzahl von Faktoren variieren, wie etwa einer gewünschten Rechenrate, Leistungspegeln, Wärmetoleranzen, Verarbeitungszyklusbudget, Eingangsdatenraten, Ausgangsdatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und anderen Design- oder Performanzbeschränkungen, wie für eine gegebene Implementierung gewünscht. Ein Prozessor kann eine oder mehrere Kombinationen aus einer Hardwarezustandsmaschine, digitaler Steuerlogik, Zentralverarbeitungseinheit oder beliebigen Hardware-, Firmware- und/oder Softwareelementen sein.
  • Einige Beispiele können durch Verwenden eines oder als ein Herstellungsartikel oder mindestens ein computerlesbares Medium implementiert werden. Ein computerlesbares Medium kann ein nichttransitorisches Speicherungsmedium zum Speichern von Logik beinhalten. Bei einigen Beispielen kann das nichttransitorische Speicherungsmedium einen oder mehrere Typen computerlesbarer Speicherungsmedien beinhalten, die elektronische Daten speichern können, einschließlich flüchtigen Speichers oder nichtflüchtigen Speichers, entfernbaren oder nicht entfernbaren Speichers, löschbaren oder nicht löschbaren Speichers, beschreibbaren oder wiederbeschreibbaren Speichers und so weiter. Bei einigen Beispielen kann die Logik verschiedene Softwareelemente, wie etwa Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, API, Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon beinhalten.
  • Gemäß manchen Beispielen kann ein computerlesbares Medium ein nichttransitorisches Speicherungsmedium zum Speichern oder Halten von Anweisungen beinhalten, die beim Ausführen durch eine Maschine, eine Rechenvorrichtung oder ein System bewirken, dass die Maschine, die Rechenvorrichtung oder das System Verfahren und/oder Operationen gemäß den beschriebenen Beispielen durchführt. Die Anweisungen können einen beliebigen geeigneten Typ von Code beinhalten, wie etwa Quellcode, kompilierten Code, interpretierten Code, ausführbaren Code, statischen Code, dynamischen Code und dergleichen. Die Anweisungen können entsprechend einer vorbestimmten Computersprache, Art oder Syntax implementiert werden, um eine Maschine, eine Rechenvorrichtung oder ein System zum Durchführen einer gewissen Funktion anzuweisen.
  • Die Anweisungen können unter Verwenden einer beliebigen geeigneten höheren, niedrigeren, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert werden.
  • Ein oder mehrere Aspekte mindestens eines Beispiels können durch repräsentative Anweisungen implementiert werden, die auf mindestens einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, die, wenn sie durch eine Maschine, eine Rechenvorrichtung oder ein System gelesen werden, die Maschine, die Rechenvorrichtung oder das System veranlassen, Logik herzustellen, um die hierin beschriebenen Techniken durchzuführen. Solche Repräsentationen, die als „IP-Kerne“ bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert werden und verschiedenen Kunden oder Herstellungsanlagen zugeführt werden, um in die Herstellungsmaschinen zu laden, die tatsächlich die Logik oder den Prozessor herstellen.
  • Das Auftreten an mehreren Stellen der Phrase „ein Beispiel“ bezieht sich nicht notwendigerweise alle auf dasselbe Beispiel oder dieselbe Ausführungsform. Jeder hierin beschriebene Aspekt kann mit einem beliebigen hierin beschriebenen anderen Aspekt oder ähnlichen Aspekt kombiniert werden, unabhängig davon, ob die Aspekte bezüglich der gleichen Figur oder des gleichen Elements beschrieben werden. Eine Unterteilung, Auslassung oder Einschließung von in den begleitenden Figuren gezeigten Blockfunktionen bedeutet nicht, dass die Hardwarekomponenten, Schaltungen, Software und/oder Elemente zum Implementieren dieser Funktionen notwendigerweise in Ausführungsformen unterteilt, ausgelassen oder eingeschlossen sein müssen.
  • Manche Beispiele können unter Verwendung des Ausdrucks „gekoppelt“ und „verbunden“ und Ableitungen davon beschrieben sein. Diese Ausdrücke sind nicht notwendigerweise als synonym zueinander zu betrachten. Beschreibungen, die die Ausdrücke „verbunden“ und/oder „gekoppelt“ verwenden, können z. B. angeben, dass sich zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt miteinander befinden. Der Ausdruck „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehrere Elemente nicht in direktem Kontakt miteinander stehen, jedoch immer noch miteinander zusammenwirken oder interagieren.
  • Die Ausdrücke „erster“, „zweiter“ und dergleichen bezeichnen hierin keine Reihenfolge, Menge oder Wichtigkeit, sondern werden vielmehr verwendet, um ein Element von einem anderen zu unterscheiden. Die Ausdrücke „ein“ und „eine“ bezeichnen hierin keine Mengenbeschränkung, sondern das Vorhandensein mindestens eines der genannten Elemente. Der Ausdruck „aktivgesetzt“, der hierin in Bezug auf ein Signal verwendet wird, bezeichnet einen Zustand des Signals, in dem das Signal aktiv ist und der erreicht werden kann, indem ein beliebiger Logikpegel entweder logisch 0 oder logisch 1 an das Signal angelegt wird. Die Ausdrücke „folgend“ oder „nach“ können sich auf unmittelbar folgend oder nach einem anderen Ereignis oder Ereignissen folgend beziehen. Andere Sequenzen von Schritten können auch gemäß alternativen Ausführungsformen durchgeführt werden. Darüber hinaus können abhängig von den jeweiligen Anwendungen zusätzliche Schritte hinzugefügt oder entfernt werden. Jede Kombination von Änderungen kann verwendet werden, und ein Durchschnittsfachmann mit dem Vorteil dieser Offenbarung würde die vielen Variationen, Modifikationen und alternativen Ausführungsformen davon verstehen.
  • Disjunktive Sprache, wie etwa die Phrase „mindestens eines von X, Y oder Z“, wird, sofern nicht speziell anders angegeben, in dem Kontext verstanden, wie er allgemein verwendet wird, um darzustellen, dass ein Element, ein Ausdruck usw. entweder X, Y oder Z oder eine beliebige Kombination davon (z. B. X, Y und/oder Z) sein kann. Somit soll und sollte eine solche disjunktive Sprache im Allgemeinen nicht bedeuten, dass gewisse Ausführungsformen erfordern, dass jeweils mindestens eines von X, mindestens eines von Y oder mindestens eines von Z vorhanden ist. Zusätzlich sollte konjunktive Sprache wie etwa die Phrase „mindestens eines von X, Y und Z“, sofern nicht ausdrücklich anders angegeben, auch als X, Y, Z oder eine beliebige Kombination davon verstanden werden, einschließlich „X, Y und/oder Z“.
  • Veranschaulichende Beispiele der hierin offenbarten Vorrichtungen, Systeme und Verfahren sind nachstehend bereitgestellt. Eine Ausführungsform der Vorrichtungen, Systeme und Verfahren kann eines oder mehrere beliebige und eine beliebige Kombination der unten beschriebenen Beispiele beinhalten.
  • Beispiel 1 beinhaltet ein computerimplementiertes Verfahren, das Folgendes umfasst: an einer Offload-Verarbeitungsvorrichtung innerhalb eines Zentralverarbeitungseinheit(CPU)-Package, Bestimmen, ob Daten in einem Puffer der Offload-Verarbeitungsvorrichtung oder einem Systemspeicher außerhalb des CPU-Package nach der Verarbeitung durch die Offload-Verarbeitungsvorrichtung gespeichert werden sollen.
  • Beispiel 2 beinhaltet ein beliebiges Beispiel, wobei das Bestimmen, ob Daten in einem Puffer der Offload-Verarbeitungsvorrichtung oder einem Systemspeicher gespeichert werden sollen, auf einem oder mehreren des Folgenden basiert: verfügbarer Pufferraum, Latenzgrenze, die mit den Daten assoziiert ist, Priorität, die mit den Daten assoziiert ist, oder verfügbare Bandbreite durch eine Schnittstelle zwischen dem Puffer und dem Systemspeicher.
  • Beispiel 3 beinhaltet ein beliebiges Beispiel und beinhaltet Folgendes: Empfangen eines Deskriptors, wobei der Deskriptor mit einem zu übertragenden Paket assoziiert ist, und an der Offload-Verarbeitungsvorrichtung, Spezifizieren eines Speicherungsorts von Daten im Deskriptor, wobei sich der Speicherungsort auf einen Ort in dem Puffer oder dem Systemspeicher beziehen soll.
  • Beispiel 4 beinhaltet ein beliebiges Beispiel und beinhaltet Folgendes: Empfangen eines Deskriptors von einer Netzwerkschnittstelle, wobei der Deskriptor mit einem empfangenen Paket assoziiert ist, und an der Offload-Verarbeitungsvorrichtung, Spezifizieren eines Speicherungsorts von Daten im Deskriptor, wobei sich der Speicherungsort auf einen Ort in dem Puffer oder dem Systemspeicher beziehen soll.
  • Beispiel 5 beinhaltet ein beliebiges Beispiel, wobei der Puffer eine feste Speicherungsmenge bereitstellt und der Systemspeicher eine erweiterbare Speicherungsmenge bereitstellt.
  • Beispiel 6 beinhaltet ein beliebiges Beispiel und beinhaltet basierend auf einer Bestimmung, Daten in dem Systemspeicher zu speichern, Kopieren der Daten zu dem Systemspeicher unter Verwendung einer Schnittstelle, die mit Peripheral Component Interconnect (PCIe) kompatibel ist.
  • Beispiel 7 beinhaltet ein beliebiges Beispiel, wobei eine Datenempfangsrate an der Offload-Verarbeitungsvorrichtung undeterministisch ist und langsame, schnelle oder stoßartige Empfangsraten umfasst.
  • Beispiel 8 beinhaltet ein beliebiges Beispiel und beinhaltet, dass die Offload-Verarbeitungsvorrichtung eine Verarbeitung an den Daten ausführt, wobei die Verarbeitung eines oder mehrere von Folgendem umfasst: Paketverarbeitung, Verschlüsselung, Entschlüsselung oder sicheres Tunneln.
  • Beispiel 9 beinhaltet ein beliebiges Beispiel und beinhaltet, dass die Offload-Verarbeitungsvorrichtung eine Schnittstelle zwischen einer Netzwerkschnittstelle und einer CPU bereitstellt.
  • Beispiel 10 beinhaltet ein beliebiges Beispiel und beinhaltet eine Einrichtung, die einen Offload-Prozessor innerhalb eines Zentralverarbeitungseinheit(CPU)-Package beinhaltet, wobei der Offload-Prozessor ausgelegt ist zum Empfangen von Daten zur Übertragung unter Verwendung einer Netzwerkschnittstelle, oder die in einem Paket durch eine Netzwerkschnittstelle empfangen werden, wobei der Offload-Prozessor eine Paketspeicherungssteuerung umfasst, um zu bestimmen, ob Daten nach der Verarbeitung durch den Offload-Prozessor in einem Puffer des Offload-Prozessors oder einem Systemspeicher gespeichert werden sollen.
  • Beispiel 11 beinhaltet ein beliebiges Beispiel, wobei das Bestimmen, ob Daten in einem Puffer des Offload-Prozessors oder einem Systemspeicher gespeichert werden sollen, auf einem oder mehreren des Folgenden basiert: verfügbarer Pufferraum, Latenzgrenze, die mit den Daten assoziiert ist, Priorität, die mit den Daten assoziiert ist, oder verfügbare Bandbreite durch eine Schnittstelle zwischen dem Puffer und dem Systemspeicher.
  • Beispiel 12 beinhaltet ein beliebiges Beispiel, wobei der Offload-Prozessor ausgelegt ist zum Empfangen eines Deskriptors, wobei der Deskriptor mit einem zu übertragenden Paket assoziiert ist, und am Offload-Prozessor, Spezifizieren eines Speicherungsorts von Daten im Deskriptor, wobei sich der Speicherungsort auf einen Ort in dem Puffer oder dem Systemspeicher beziehen soll.
  • Beispiel 13 beinhaltet ein beliebiges Beispiel, wobei der Offload-Prozessor ausgelegt ist zum Empfangen eines Deskriptors von einer Netzwerkschnittstelle, wobei der Deskriptor mit einem empfangenen Paket assoziiert ist, und am Offload-Prozessor, Spezifizieren eines Speicherungsorts von Daten im Deskriptor, wobei sich der Speicherungsort auf einen Ort in dem Puffer oder dem Systemspeicher beziehen soll.
  • Beispiel 14 beinhaltet ein beliebiges Beispiel, wobei der Puffer eine feste Speicherungsmenge bereitstellt und der Systemspeicher eine erweiterbare Speicherungsmenge bereitstellt.
  • Beispiel 15 beinhaltet ein beliebiges Beispiel, wobei, basierend auf einer Bestimmung, Daten in dem Systemspeicher zu speichern, der Offload-Prozessor ausgelegt ist zum Kopieren der Daten zu dem Systemspeicher unter Verwendung einer Schnittstelle, die mit Peripheral Component Interconnect (PCIe) kompatibel ist.
  • Beispiel 16 beinhaltet ein beliebiges Beispiel, wobei eine Datenempfangsrate am Offload-Prozessor undeterministisch ist und langsame, schnelle oder stoßartige Empfangsraten umfasst.
  • Beispiel 17 beinhaltet ein beliebiges Beispiel, wobei der Offload-Prozessor ausgelegt ist zum Verarbeiten der Daten, wobei das Verarbeiten der Daten eines oder mehrere von Folgendem umfasst: Paketverarbeitung, Verschlüsselung, Entschlüsselung oder sicheres Tunneln.
  • Beispiel 18 beinhaltet ein beliebiges Beispiel, wobei der Offload-Prozessor ausgelegt ist zum Bereitstellen einer Schnittstelle zwischen einer Netzwerkschnittstelle und einer CPU.
  • Beispiel 19 beinhaltet ein beliebiges Beispiel und beinhaltet eine Netzwerkschnittstelle, die kommunikativ mit dem Offload-Prozessor gekoppelt ist, und eine CPU, die kommunikativ mit dem Offload-Prozessor gekoppelt ist, wobei sich der Offload-Prozessor und die CPU ein Package teilen.
  • Beispiel 20 beinhaltet ein beliebiges Beispiel, wobei eine Server-Rechenplattform den Offload-Prozessor umfasst.
  • 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 15/931476 [0001]
    • US 63/022193 [0001]

Claims (20)

  1. Computerimplementiertes Verfahren, das Folgendes umfasst: an einer Offload-Verarbeitungsvorrichtung innerhalb eines Zentralverarbeitungseinheit(CPU)-Package, Bestimmen, ob Daten in einem Puffer der Offload-Verarbeitungsvorrichtung oder einem Systemspeicher außerhalb des CPU-Package nach der Verarbeitung durch die Offload-Verarbeitungsvorrichtung gespeichert werden sollen.
  2. Verfahren nach Anspruch 1, wobei das Bestimmen, ob Daten in einem Puffer der Offload-Verarbeitungsvorrichtung oder einem Systemspeicher gespeichert werden sollen, auf einem oder mehreren des Folgenden basiert: verfügbarer Pufferraum, Latenzgrenze, die mit den Daten assoziiert ist, Priorität, die mit den Daten assoziiert ist, oder verfügbare Bandbreite durch eine Schnittstelle zwischen dem Puffer und dem Systemspeicher.
  3. Verfahren nach Anspruch 1, das Folgendes umfasst: Empfangen eines Deskriptors, wobei der Deskriptor mit einem zu übertragenden Paket assoziiert ist, und an der Offload-Verarbeitungsvorrichtung, Spezifizieren eines Speicherungsorts von Daten im Deskriptor, wobei sich der Speicherungsort auf einen Ort in dem Puffer oder dem Systemspeicher beziehen soll.
  4. Verfahren nach Anspruch 1, das Folgendes umfasst: Empfangen eines Deskriptors von einer Netzwerkschnittstelle, wobei der Deskriptor mit einem empfangenen Paket assoziiert ist, und an der Offload-Verarbeitungsvorrichtung, Spezifizieren eines Speicherungsorts von Daten im Deskriptor, wobei sich der Speicherungsort auf einen Ort in dem Puffer oder dem Systemspeicher beziehen soll.
  5. Verfahren nach Anspruch 1, wobei der Puffer eine feste Speicherungsmenge bereitstellt und der Systemspeicher eine erweiterbare Speicherungsmenge bereitstellt.
  6. Verfahren nach Anspruch 1, das Folgendes umfasst: basierend auf einer Bestimmung, Daten in dem Systemspeicher zu speichern, Kopieren der Daten zu dem Systemspeicher unter Verwendung einer Schnittstelle, die mit Peripheral Component Interconnect (PCIe) kompatibel ist.
  7. Verfahren nach Anspruch 1, wobei eine Datenempfangsrate an der Offload-Verarbeitungsvorrichtung undeterministisch ist und langsame, schnelle oder stoßartige Empfangsraten umfasst.
  8. Verfahren nach Anspruch 1, das Folgendes umfasst: die Offload-Verarbeitungsvorrichtung führt eine Verarbeitung an den Daten aus, wobei die Verarbeitung eines oder mehrere von Folgendem umfasst: Paketverarbeitung, Verschlüsselung, Entschlüsselung oder sicheres Tunneln.
  9. Verfahren nach Anspruch 1, das Folgendes umfasst: die Offload-Verarbeitungsvorrichtung stellt eine Schnittstelle zwischen einer Netzwerkschnittstelle und einer CPU bereit.
  10. Einrichtung, die Folgendes umfasst: einen Offload-Prozessor innerhalb eines Zentralverarbeitungseinheit(CPU)-Package, wobei der Offload-Prozessor ausgelegt ist zum Empfangen von Daten zur Übertragung unter Verwendung einer Netzwerkschnittstelle, oder die in einem Paket durch eine Netzwerkschnittstelle empfangen werden, wobei der Offload-Prozessor eine Paketspeicherungssteuerung umfasst, um zu bestimmen, ob Daten nach der Verarbeitung durch den Offload-Prozessor in einem Puffer des Offload-Prozessors oder einem Systemspeicher gespeichert werden sollen.
  11. Einrichtung nach Anspruch 10, wobei das Bestimmen, ob Daten in einem Puffer des Offload-Prozessors oder einem Systemspeicher gespeichert werden sollen, auf einem oder mehreren des Folgenden basiert: verfügbarer Pufferraum, Latenzgrenze, die mit den Daten assoziiert ist, Priorität, die mit den Daten assoziiert ist, oder verfügbare Bandbreite durch eine Schnittstelle zwischen dem Puffer und dem Systemspeicher.
  12. Einrichtung nach Anspruch 10, wobei der Offload-Prozessor ausgelegt ist zum Empfangen eines Deskriptors, wobei der Deskriptor mit einem zu übertragenden Paket assoziiert ist, und am Offload-Prozessor, Spezifizieren eines Speicherungsorts von Daten im Deskriptor, wobei sich der Speicherungsort auf einen Ort in dem Puffer oder dem Systemspeicher beziehen soll.
  13. Einrichtung nach Anspruch 10, wobei der Offload-Prozessor ausgelegt ist zum Empfangen eines Deskriptors von einer Netzwerkschnittstelle, wobei der Deskriptor mit einem empfangenen Paket assoziiert ist, und am Offload-Prozessor, Spezifizieren eines Speicherungsorts von Daten im Deskriptor, wobei sich der Speicherungsort auf einen Ort in dem Puffer oder dem Systemspeicher beziehen soll.
  14. Einrichtung nach Anspruch 10, wobei der Puffer eine feste Speicherungsmenge bereitstellt und der Systemspeicher eine erweiterbare Speicherungsmenge bereitstellt.
  15. Einrichtung nach Anspruch 10, wobei: basierend auf einer Bestimmung, Daten in dem Systemspeicher zu speichern, der Offload-Prozessor ausgelegt ist zum Kopieren der Daten zu dem Systemspeicher unter Verwendung einer Schnittstelle, die mit Peripheral Component Interconnect (PCIe) kompatibel ist.
  16. Einrichtung nach Anspruch 10, wobei eine Datenempfangsrate am Offload-Prozessor undeterministisch ist und langsame, schnelle oder stoßartige Empfangsraten umfasst.
  17. Einrichtung nach Anspruch 10, wobei der Offload-Prozessor ausgelegt ist zum Verarbeiten der Daten, wobei das Verarbeiten der Daten eines oder mehrere von Folgendem umfasst: Paketverarbeitung, Verschlüsselung, Entschlüsselung oder sicheres Tunneln.
  18. Einrichtung nach Anspruch 10, wobei der Offload-Prozessor ausgelegt ist zum Bereitstellen einer Schnittstelle zwischen einer Netzwerkschnittstelle und einer CPU.
  19. Einrichtung nach Anspruch 10, umfassend eine Netzwerkschnittstelle, die kommunikativ mit dem Offload-Prozessor gekoppelt ist, und eine CPU, die kommunikativ mit dem Offload-Prozessor gekoppelt ist, wobei sich der Offload-Prozessor und die CPU ein Package teilen.
  20. Einrichtung nach Anspruch 10, die eine Server-Rechenplattform umfasst, die die Verwendung des Offload-Prozessors anfordert.
DE112020007201.0T 2020-05-08 2020-12-15 Speicherzuordnung für verteilte Verarbeitungsvorrichtungen Pending DE112020007201T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063022193P 2020-05-08 2020-05-08
US63/022,193 2020-05-08
US15/931,476 2020-05-13
US15/931,476 US11934330B2 (en) 2020-05-08 2020-05-13 Memory allocation for distributed processing devices
PCT/US2020/065076 WO2021225628A1 (en) 2020-05-08 2020-12-15 Memory allocation for distributed processing devices

Publications (1)

Publication Number Publication Date
DE112020007201T5 true DE112020007201T5 (de) 2023-04-27

Family

ID=75491183

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020007201.0T Pending DE112020007201T5 (de) 2020-05-08 2020-12-15 Speicherzuordnung für verteilte Verarbeitungsvorrichtungen

Country Status (5)

Country Link
US (1) US11934330B2 (de)
EP (1) EP4147427A4 (de)
CN (1) CN115516832A (de)
DE (1) DE112020007201T5 (de)
WO (2) WO2021225628A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3541040B1 (de) * 2018-03-16 2022-04-13 Acklio Verfahren und vorrichtung zur verarbeitung von nachrichtendaten
KR20220057355A (ko) * 2020-10-29 2022-05-09 삼성전자주식회사 호스트 및 스토리지 시스템을 포함하는 컴퓨팅 시스템 및 컴퓨팅 시스템의 동작 방법
US20220206852A1 (en) * 2020-12-31 2022-06-30 Nutanix, Inc. Lockless handling of buffers for remote direct memory access (rdma) i/o operations
CN115469800A (zh) * 2021-06-10 2022-12-13 三星电子株式会社 数据处理系统以及用于访问异构存储器系统的方法
US20230214337A1 (en) * 2022-01-06 2023-07-06 Vmware, Inc. Methods and systems for extablishing direct communications between a server computer and a smart network interface controller
US12019576B2 (en) * 2022-08-02 2024-06-25 Xilinx, Inc. Systems and methods to transport memory mapped traffic amongst integrated circuit devices
US11909656B1 (en) * 2023-01-17 2024-02-20 Nokia Solutions And Networks Oy In-network decision for end-server-based network function acceleration
CN117389693B (zh) * 2023-12-12 2024-04-05 麒麟软件有限公司 一种硬件虚拟化系统io层安全检测方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8862783B2 (en) 2005-10-25 2014-10-14 Broadbus Technologies, Inc. Methods and system to offload data processing tasks
US8930690B2 (en) 2012-03-21 2015-01-06 Microsoft Corporation Offloading packet processing for networking device virtualization
WO2013177313A2 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Processing structured and unstructured data using offload processors
US8848741B2 (en) 2012-06-21 2014-09-30 Breakingpoint Systems, Inc. High-speed CLD-based TCP segmentation offload
US20130340977A1 (en) 2012-06-21 2013-12-26 Gregory L. Singleton Heat sink for use in an electronics system
WO2014113055A1 (en) 2013-01-17 2014-07-24 Xockets IP, LLC Offload processor modules for connection to system memory
KR20140141348A (ko) 2013-05-31 2014-12-10 삼성전자주식회사 호스트 장치와 저장 장치가 연계하여 중복 제거 프로세스를 수행하는 방법 및 스토리지 시스템
US9641435B1 (en) 2014-03-28 2017-05-02 Juniper Neworks, Inc. Packet segmentation offload for virtual networks
WO2016003489A1 (en) 2014-06-30 2016-01-07 Nicira, Inc. Methods and systems to offload overlay network packet encapsulation to hardware
US9678758B2 (en) 2014-09-26 2017-06-13 Qualcomm Incorporated Coprocessor for out-of-order loads
US10250571B2 (en) 2015-08-24 2019-04-02 Cavium, Llc Systems and methods for offloading IPSEC processing to an embedded networking device
US10225183B2 (en) 2016-06-01 2019-03-05 Intel Corporation System and method for virtualized receive descriptors
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
CN109714302B (zh) 2017-10-25 2022-06-14 阿里巴巴集团控股有限公司 算法的卸载方法、装置和系统
US11061772B2 (en) * 2018-12-14 2021-07-13 Samsung Electronics Co., Ltd. FPGA acceleration system for MSR codes

Also Published As

Publication number Publication date
CN115516832A (zh) 2022-12-23
EP4147427A4 (de) 2024-06-05
US20210349820A1 (en) 2021-11-11
US11934330B2 (en) 2024-03-19
WO2021225637A1 (en) 2021-11-11
WO2021225628A1 (en) 2021-11-11
EP4147427A1 (de) 2023-03-15
US20210117360A1 (en) 2021-04-22

Similar Documents

Publication Publication Date Title
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
EP3706394B1 (de) Schreiben auf mehrere speicherziele
DE102022102788A1 (de) Konfigurierbare vorrichtungsschnittstelle
US20200104275A1 (en) Shared memory space among devices
DE112020001833T5 (de) Netzwerkschnittstelle für Datentransport in heterogenen Rechenumgebungen
DE102022107621A1 (de) Resourcenauswahl, die zum teil auf der arbeitslast basiert
DE102020133738A1 (de) Firmware-update-techniken
US11681625B2 (en) Receive buffer management
CN115210693A (zh) 具有可预测时延的存储事务
DE102020133262A1 (de) Arbeitslastscheduler für Speicherzuweisung
DE102022104207A1 (de) Pooling von Netzwerkverarbeitungsressourcen
DE102019130686A1 (de) Technologien zur bereitstellung dynamischer auswahl von edge- und lokalen beschleunigerressourcen
DE102022107778A1 (de) Adressübersetzung an einer zielnetzwerk-schnittstellenvorrichtung
DE102022126611A1 (de) Service-mesh-auslagerung an netzwerkvorrichtungen
DE112022002284T5 (de) Auslagerung der vermittlungsschicht 7 an eine infrastrukturverarbeitungseinheit für ein vermaschtes dienstnetz
DE102020201347A1 (de) Technologien zum abgleichen von sicherheitsanforderungen von funktion-als-dienst in edge-clouds
DE102022124530A1 (de) Speicherpoolmanagement
DE102020102820A1 (de) Zeitstempel-Ausrichtung über mehrere Rechenknoten
DE102020133272A1 (de) Pufferzuweisung für Parallelverarbeitung von Daten
WO2022139921A1 (en) Management of distributed shared memory
DE102020130555A1 (de) Adaptiver datenversand basierend auf lastfunktionen
DE102022129250A1 (de) Übertragungsrate basierend auf detektierter verfügbarer Bandbreite
DE102022117807A1 (de) Seitenfehlerverwaltungstechnologien
DE102022103981A1 (de) Flusssteuerungstechnologien