DE102020125046A1 - Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle - Google Patents

Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle Download PDF

Info

Publication number
DE102020125046A1
DE102020125046A1 DE102020125046.0A DE102020125046A DE102020125046A1 DE 102020125046 A1 DE102020125046 A1 DE 102020125046A1 DE 102020125046 A DE102020125046 A DE 102020125046A DE 102020125046 A1 DE102020125046 A1 DE 102020125046A1
Authority
DE
Germany
Prior art keywords
storage
interface
memory
nvme
processor
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
DE102020125046.0A
Other languages
English (en)
Inventor
Yadong Li
Jose Niell
Kiel BOYLE
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 DE102020125046A1 publication Critical patent/DE102020125046A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • 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/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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
    • 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/0036Small computer system interface [SCSI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Cooling Or The Like Of Electrical Apparatus (AREA)

Abstract

Hierin beschriebene Beispiele betreffen eine Netzwerkschnittstellensteuerungsvorrichtung, die eine Prozessorkomponente umfasst umfassend zumindest einen Prozessor, um Entfernter-Speicherzugriff-Kommunikationen zu erzeugen, um auf eine erste Gruppe aus einem oder mehreren Namensräumen zuzugreifen; eine Speicherungsschnittstellenschaltungsanordnung, um Entfernter-Speicherzugriff-Kommunikationen zu erzeugen, um auf eine zweite Gruppe aus einem oder mehreren Namensräumen zuzugreifen; und eine Speicherungskonfigurationsschaltungsanordnung mit einer Vorrichtungsschnittstelle, die über einen Userspace-Treiber zugänglich ist, wobei die Speicherungskonfigurationsschaltungsanordnung ausgebildet ist, die erste und zweite Gruppe aus einem oder mehreren Namensräumen einzustellen. Bei einigen Beispielen ist die Vorrichtungsschnittstelle mit einer Peripheral Component Interconnect Express (PCIe) kompatibel und die Speicherungskonfigurationsschaltungsanordnung ist als physische Funktion (PF) oder virtuelle Funktion (VF) zugänglich.

Description

  • Die Non-Volatile Memory Express- (NVMe-) Spezifikation beschreibt ein System für Zugriffe auf Datenspeicherungssysteme über einen Peripheral Component Interconnect Express- (PCIe-) Port. NVMe wird zum Beispiel in der Spezifikation NVM Express™ Base, Revision 1.3c (2018), sowie Vorgängern, Nachfolgern oder proprietären Abweichungen derselben beschrieben, die durch Bezugnahme in ihrer Gesamtheit aufgenommen sind. NVMe ermöglicht es einer Host-Vorrichtung, Speicherungsregionen als separate Namensräume (namespaces) festzulegen. Ein Namensraum kann eine adressierbare Domäne in einem nichtflüchtigen Speicher mit einer ausgewählten Anzahl von Speicherungsblöcken sein, die für den Blockzugriff formatiert wurden. Ein Namensraum kann einen adressierbaren Abschnitt eines Mediums in einem Solid-State-Laufwerk (SSD; solid state drive) oder einen Multi-Vorrichtungs-Speicherraum umfassen, der mehrere SSDs oder andere Datenspeicherungsvorrichtungen umspannt. Eine Namensraum-ID (NSID) kann ein eindeutiger Identifizierer für einen zugeordneten Namensraum sein. Eine Host-Vorrichtung kann auf einen bestimmten nichtflüchtigen Speicher zugreifen, indem sie eine NSID, eine Steuerungs-ID und eine zugeordnete logische Adresse für den Block oder die Blöcke (z. B. logische Blockadressen (LBAs)) festlegt.
  • Figurenliste
    • 1 ist ein vereinfachtes Diagramm von zumindest einem Ausführungsbeispiel eines Rechenzentrums für ein Ausführen von Arbeitslasten mit disaggregierten Ressourcen.
    • 2 ist ein vereinfachtes Diagramm von zumindest einem Ausführungsbeispiel eines Pods, der in einem Rechenzentrum umfasst sein kann.
    • 3 ist eine Perspektivenansicht von zumindest einem Ausführungsbeispiel eines Racks, das in einem Pod umfasst sein kann.
    • 4 ist eine Seitenansicht eines Racks.
    • 5 ist eine Perspektivenansicht eines Racks, das einen darin befestigten Schlitten aufweist.
    • 6 ist ein vereinfachtes Blockdiagramm von zumindest einem Ausführungsbeispiel einer Oberseite eines Schlittens.
    • 7 ist ein vereinfachtes Blockdiagramm von zumindest einem Ausführungsbeispiel einer Unterseite eines Schlittens.
    • 8 ist ein vereinfachtes Blockdiagramm von zumindest einem Ausführungsbeispiel eines Rechenschlittens.
    • 9 ist eine perspektivische Draufsicht von zumindest einem Ausführungsbeispiel eines Rechenschlittens.
    • 10 ist ein vereinfachtes Blockdiagramm von zumindest einem Ausführungsbeispiel eines Beschleunigerschlittens, der in einem Rechenzentrum verwendbar ist.
    • 11 ist eine perspektivische Draufsicht von zumindest einem Ausführungsbeispiel eines Beschleunigerschlittens.
    • 12 ist ein vereinfachtes Blockdiagramm von zumindest einem Ausführungsbeispiel eines Speicherungsschlittens, der in einem Rechenzentrum verwendbar ist.
    • 13 ist eine perspektivische Draufsicht von zumindest einem Ausführungsbeispiel eines Speicherungsschlittens.
    • 14 ist ein vereinfachtes Blockdiagramm von zumindest einem Ausführungsbeispiel eines Speicherschlittens, der in einem Rechenzentrum verwendbar ist.
    • 15 stellt ein System zur Ausführung einer oder mehrerer Arbeitslasten dar.
    • 16 zeigt ein Beispiel für ein System, das die Erzeugung von NVMe-oF-Transaktionen an eine SmartNIC auslagert.
    • 17A zeigt ein beispielhaftes System.
    • 17B zeigt ein beispielhaftes System.
    • 18A stellt einen beispielhaften Prozessor dar.
    • 18B stellt einen beispielhaften Prozessor dar.
    • 19 stellt eine beispielhafte Netzwerkschnittstelle dar.
    • 20 stellt ein beispielhaftes System dar.
  • DETAILLIERTE BESCHREIBUNG
  • 1 zeigt ein Rechenzentrum, in dem disaggregierte Ressourcen kooperativ eine oder mehrere Arbeitslasten (z. B. Anwendungen im Auftrag von Kunden) ausführen können, mehrere Pods 110, 120, 130, 140 umfassen, wobei ein Pod eine oder mehrere Reihen von Racks ist oder umfasst. Obwohl das Rechenzentrum 100 mit mehreren Pods dargestellt ist, kann das Rechenzentrum 100 bei einigen Ausführungsbeispielen natürlich als ein einzelner Pod verkörpert sein. Wie hierin detaillierter beschrieben, häust jedes Rack mehrere Schlitten, von denen jeder primär mit einer bestimmten Art von Ressource ausgestattet sein kann (z. B. Speichervorrichtungen (memory), Datenspeicherungsvorrichtungen (storage), Beschleunigervorrichtungen, Allzweckprozessoren), z. B. Ressourcen, die logisch gekoppelt werden können, um einen zusammengesetzten Knoten zu bilden, der beispielsweise als Server agieren kann. Bei dem Ausführungsbeispiel sind die Schlitten in jedem Pod 110, 120, 130, 140 mit mehreren Pod-Schaltern (z.B. Schalter, die Datenkommunikationen zu und von Schlitten innerhalb des Pods routen) verbunden. Die Pod-Schalter verbinden wiederum mit Spine-Schaltern 150, die Kommunikationen zwischen Pods (z.B. den Pods 110, 120, 130, 140) in dem Rechenzentrum 100 schalten. Bei einigen Ausführungsbeispielen können die Schlitten mit einer Struktur (fabric) unter Verwendung von Intel® Omni-Path-Technologie verbunden sein. Bei anderen Ausführungsbeispielen können die Schlitten mit anderen Strukturen, wie beispielsweise InfiniBand oder Ethernet, verbunden sein. Wie hierin detaillierter beschrieben ist, können Ressourcen innerhalb von Schlitten in dem Rechenzentrum 100 einer Gruppe (hierin als ein „verwalteter Knoten“ bezeichnet) zugeordnet werden, die Ressourcen von einem oder mehreren Schlitten umfasst, die bei der Ausführung einer Arbeitslast gemeinschaftlich genutzt werden sollen. Die Arbeitslast kann ausgeführt werden, als ob sich die Ressourcen, die zu dem verwalteten Knoten gehören, auf demselben Schlitten befinden.
  • Die Ressourcen in einem verwalteten Knoten können zu Schlitten gehören, die zu unterschiedlichen Racks und sogar zu unterschiedlichen Pods 110, 120, 130, 140 gehören. Somit können einige Ressourcen eines einzelnen Schlittens einem verwalteten Knoten zugewiesen sein, während andere Ressourcen desselben Schlittens einem unterschiedlichen verwalteten Knoten zugewiesen sind (z. B. ein Prozessor ist einem verwalteten Knoten zugewiesen und ein anderer Prozessor desselben Schlittens ist einem unterschiedlichen verwalteten Knoten zugewiesen).
  • Ein Rechenzentrum, umfassend disaggregierte Ressourcen, wie z. B. das Rechenzentrum 100, kann in einer breiten Vielzahl von Kontexten verwendet werden, wie z. B. Unternehmen, Regierung, Cloud-Dienstanbieter und Kommunikationsdienst-Anbieter (z. B. Telcos), sowie in einer breiten Vielzahl von Größen, von Cloud-Dienstanbieter-Mega-Rechenzentren, die über 10.000 Quadratmeter verbrauchen, bis hin zu Einzel- oder Mehrfach-Rack-Installationen zur Verwendung in Basisstationen.
  • Das Disaggregieren von Ressourcen zu Schlitten, überwiegend umfassend eine einzige Ressourcenart (z. B. Rechenschlitten, die primär Rechenressourcen umfassen, Speicherschlitten, die primär Speicherressourcen umfassen), und das selektive Zuweisen (allocation) und Aufheben der Zuweisung (deallocation) der disaggregierten Ressourcen, um einen verwalteten Knoten zu bilden, der zugewiesen ist, um eine Arbeitslast auszuführen, verbessert den Betrieb und die Ressourcennutzung des Rechenzentrums 100 im Vergleich zu typischen Rechenzentren, die hyperkonvergente Server aufweisen, die Rechen-, Speicher- (memory), Speicherungs- (storage) und möglicherweise zusätzliche Ressourcen in einem einzelnen Gehäuse umfassen. Da Schlitten beispielsweise hauptsächlich Ressourcen einer bestimmten Art umfassen, können Ressourcen einer gegebenen Art unabhängig von anderen Ressourcen upgegradet werden. Zusätzlich, da unterschiedliche Ressourcenarten (Prozessoren, Speicherung, Beschleuniger etc.) üblicherweise unterschiedliche Aktualisierungsraten aufweisen, können eine größere Ressourcennutzung und reduzierte Gesamtbetriebskosten erreicht werden. Beispielsweise kann ein Rechenzentrumsbetreiber die Prozessoren in seiner gesamten Anlage upgraden, indem er nur die Rechenschlitten auslagert. In einem solchen Fall werden Beschleuniger- und SpeicherungsRessourcen möglicherweise nicht gleichzeitig upgegradet, sondern es kann ihnen vielmehr erlaubt werden, so lange weiterzuarbeiten, bis die eigene Aktualisierung dieser Ressourcen geplant ist. Auch die Ressourcennutzung kann zunehmen. Wenn verwaltete Knoten beispielsweise basierend auf Anforderungen der Arbeitslasten zusammengesetzt sind, die auf ihnen ausgeführt werden, ist es wahrscheinlicher, dass Ressourcen innerhalb eines Knotens vollständig genutzt werden. Eine solche Nutzung kann es erlauben, dass mehr verwaltete Knoten in einem Rechenzentrum mit einem gegebenen Satz von Ressourcen ausgeführt werden oder dass ein Rechenzentrum, von dem erwartet wird, dass es einen gegebenen Satz von Arbeitslasten ausführt, unter Verwendung von weniger Ressourcen gebaut wird.
  • 2 stellt einen Pod dar. Ein Pod kann einen Satz von Reihen 200, 210, 220, 230 von Racks 240 umfassen. Jedes Rack 240 kann mehrere Schlitten (z. B. sechzehn Schlitten) häusen und an die gehäusten Schlitten Leistung und Datenverbindungen bereitstellen, wie hierin detaillierter beschrieben ist. Bei dem Ausführungsbeispiel sind die Racks in jeder Reihe 200, 210, 220, 230 mit mehreren Pod-Schaltern 250, 260 verbunden. Der Pod-Schalter 250 umfasst einen Satz von Ports 252, mit denen die Schlitten der Racks des Pods 110 verbunden sind, und einen anderen Satz von Ports 254, die den Pod 110 mit den Spine-Schaltern 150 verbinden, um Anschlussfähigkeit an andere Pods in dem Rechenzentrum 100 bereitzustellen. Ähnlich umfasst der Pod-Schalter 260 einen Satz von Ports 262, mit dem die Schlitten der Racks des Pods 110 verbunden sind, und einen Satz von Ports 264, die den Pod 110 mit den Spine-Schaltern 150 verbinden. Somit stellt die Verwendung des Paares von Schaltern 250, 260 an den Pod 110 einen Redundanzbetrag bereit. Falls zum Beispiel einer der Schalter 250, 260 ausfällt, können die Schlitten in dem Pod 110 immer noch eine Datenkommunikation mit dem Rest des Rechenzentrums 100 (z. B. Schlitten anderer Pods) über den anderen Schalter 250, 260 aufrechterhalten. Ferner können die Schalter 150, 250, 260 bei dem Ausführungsbeispiel als Dual-Mode- optische Schalter verkörpert sein, die in der Lage sind, sowohl Ethernet-Protokoll-Kommunikationen, die Internet-Protocol- (IP-) Pakete tragen als auch Kommunikationen gemäß einem zweiten, Hochperformance-Link-Layer-Protokoll (z. B. PCI Express) via optische Signalisierungsmedien einer optischen Struktur zu routen.
  • Es wird darauf hingewiesen, dass jeder der anderen Pods 120, 130, 140 (sowie irgendwelche zusätzlichen Pods des Datenzentrums 100) ähnlich strukturiert sein können wie der, und Komponenten aufweisen können, die ähnlich sind zu dem, Pod 110, der in 2 gezeigt und Bezug nehmend auf dieselbe beschrieben ist (z. B. kann jeder Pod Reihen von Racks aufweisen, die mehrere Schlitten häusen, wie vorangehend beschrieben ist). Zusätzlich, obwohl zwei Pod-Schalter 250, 260 gezeigt sind, sollte es sich verstehen, dass bei anderen Ausführungsbeispielen jeder Pod 110, 120, 130, 140 mit einer unterschiedlichen Anzahl von Pod-Schaltern, die noch mehr Failover-Kapazität bereitstellen, verbunden sein kann. Natürlich können bei anderen Ausführungsbeispielen die Pods anders angeordnet sein als die in den 1-2 gezeigte Reihenvon-Racks-Konfiguration. Beispielsweise kann ein Pod als mehrere Sätze von Racks verkörpert sein, in denen jeder Satz von Racks radial angeordnet ist, z. B. sind die Racks äquidistant von einem mittleren Schalter.
  • Bezug nehmend nun auf 3-5 umfasst jedes beispielhafte Rack 240 des Rechenzentrums 100 zwei längliche Stützpfosten 302, 304, die vertikal angeordnet sind. Zum Beispiel können sich die länglichen Stützpfosten 302, 304 von einem Boden des Rechenzentrums 100 bei Einsatz nach oben erstrecken. Das Rack 240 umfasst auch ein oder mehrere horizontale Paare 310 länglicher Stützarme 312 (identifiziert in 3 via eine gestrichelte Ellipse), die konfiguriert sind, einen Schlitten des Rechenzentrums 100 zu unterstützen, wie nachfolgend erörtert ist. Ein länglicher Stützarm 312 des Paares länglicher Stützarme 312 erstreckt sich von dem länglichen Stützpfosten 302 nach außen und der andere längliche Stützarm 312 erstreckt sich von dem länglichen Stützpfosten 304 nach außen.
  • Bei den Ausführungsbeispielen ist jeder Schlitten des Rechenzentrums 100 als ein gehäuseloser Schlitten ausgeführt. Das heißt, jeder Schlitten weist ein gehäuseloses Schaltungsplatinensubstrat auf, auf dem physische Ressourcen (z. B. Prozessoren, Speicher, Beschleuniger, Speicherung, etc.) befestigt sind, wie nachfolgend detaillierter erörtert wird. Somit ist das Rack 240 ausgebildet, die gehäuselosen Schlitten zu empfangen. Beispielsweise definiert jedes Paar 310 länglicher Stützarme 312 einen Schlitten-Schlitz (-Slot) 320 des Racks 240, der ausgebildet ist, einen entsprechenden gehäuselosen Schlitten zu empfangen. Zu diesem Zweck umfasst jeder beispielhafte, längliche Stützarm 312 eine Schaltungsplatinenführung 330, die ausgebildet ist, das gehäuselose Schaltungsplatinensubstrat des Schlittens zu empfangen. Jede Schaltungsplatinenführung 330 ist an einer Oberseite 332 des entsprechenden länglichen Stützarms 312 befestigt oder anderweitig befestigt. Bei dem Ausführungsbeispiel ist jede Schaltungsplatinenführung 330 zum Beispiel an einem distalen Ende des entsprechenden länglichen Stützarmes 312 relativ zu dem entsprechenden länglichen Stützpfosten 302, 304 befestigt. Der Klarheit der Figuren halber wird möglicherweise nicht in jeder Figur Bezug auf jede Schaltungsplatinenführung 330 genommen.
  • Jede Schaltungsplatinenführung 330 umfasst eine innere Wand, die einen Schaltungsplatinen-Schlitz 380 definiert, der ausgebildet ist, das gehäuselose Schaltungsplatinensubstrat eines Schlittens 400 zu empfangen, wenn der Schlitten 400 in dem entsprechenden Schlitten-Schlitz 320 des Racks 240 empfangen wird. Zu diesem Zweck richtet, wie in 4 gezeigt ist, ein Nutzer (oder Roboter) das gehäuselose Schaltungsplatinensubstrat eines beispielhaften gehäuselosen Schlittens 400 zu einem Schlitten-Schlitz 320 aus. Der Nutzer oder Roboter kann dann das gehäuselose Schaltungsplatinensubstrat vorwärts in den Schlitten-Schlitz 320 schieben, derart, dass jeder Seitenrand 414 des gehäuselosen Schaltungsplatinensubstrats in einem entsprechenden Schaltungsplatinen-Schlitz 380 der Schaltungsplatinenführungen 330 des Paares 310 länglicher Stützarme 312 empfangen wird, die den entsprechenden Schlitten-Schlitz 320 definieren, wie in 4 gezeigt ist. Durch ein Aufweisen von robotisch zugänglichen und robotisch manipulierbaren Schlitten, die disaggregierte Ressourcen aufweisen, kann irgendeine Art von Ressource unabhängig voneinander und mit ihrer eigenen optimierten Aktualisierungsrate upgegradet werden. Ferner sind die Schlitten ausgebildet, um blind mit Leistungs- und Datenkommunikationskabeln in jedem Rack 240 zusammenzupassen, was ihre Fähigkeit verbessert, schnell entfernt, upgegradet, neu installiert und/oder ersetzt werden zu können. Somit kann das Rechenzentrum 100 bei einigen Ausführungsbeispielen ohne menschliche Beteiligung vor Ort in dem Rechenzentrum arbeiten (z. B. Ausführen von Arbeitslasten, Unterziehen von Wartung und/oder Upgrades etc.). Bei anderen Ausführungsbeispielen kann ein Mensch eine oder mehrere Wartungs- oder Upgrade-Operationen in dem Rechenzentrum 100 ermöglichen.
  • Es wird darauf hingewiesen, dass jede Schaltungsplatinenführung 330 doppelseitig ist. Das heißt, jede Schaltungsplatinenführung 330 umfasst eine innere Wand, die einen Schaltungsplatinen-Schlitz 380 auf jeder Seite der Schaltungsplatinenführung 330 definiert. Auf diese Weise kann jede Schaltungsplatinenführung 330 ein gehäuseloses Schaltungsplatinensubstrat auf beiden Seiten stützen. Somit kann dem Rack 240 ein einzelner zusätzlicher länglicher Stützpfosten hinzugefügt werden, um das Rack 240 in eine Zwei-Rack-Lösung umzubauen, die doppelt so viele Schlitten-Schlitze 320 halten kann, wie in 3 gezeigt ist. Das beispielhafte Rack 240 umfasst sieben Paare 310 länglicher Stützarme 312, die entsprechende sieben Schlitten-Schlitze 320 definieren, die jeweils ausgebildet sind, um einen entsprechenden Schlitten 400 wie vorangehend erörtert ist, zu empfangen und zu stützen. Natürlich kann bei anderen Ausführungsbeispielen das Rack 240 zusätzliche oder weniger Paare 310 länglicher Stützarme 312 (z. B. zusätzliche oder weniger Schlitten-Schlitze 320) umfassen. Es wird darauf hingewiesen, dass, da der Schlitten 400 gehäuselos ist, der Schlitten 400 eine Gesamthöhe aufweisen kann, die anders ist als typische Server. Somit kann bei einigen Ausführungsbeispielen die Höhe jedes Schlitten-Schlitzes 320 niedriger sein als die Höhe eines typischen Servers (z. B. niedriger als eine einzelne Rangeinheit, „1U“). Das heißt, die vertikale Distanz zwischen jedem Paar 310 länglicher Stützarme 312 kann geringer sein als eine Standard-Rack-Einheit „1U“. Zusätzlich kann aufgrund der relativen Verringerung der Höhe der Schlitten-Schlitze 320 die Gesamthöhe des Racks 240 bei einigen Ausführungsbeispielen niedriger sein als die Höhe traditioneller Rack-Einhäusungen. Zum Beispiel kann bei einigen Ausführungsbeispielen jeder der länglichen Stützpfosten 302, 304 eine Länge von sechs Fuß oder weniger aufweisen. Bei anderen Ausführungsbeispielen kann das Rack 240 wiederum unterschiedliche Abmessungen aufweisen. Zum Beispiel kann bei einigen Ausführungsbeispielen die vertikale Distanz zwischen jedem Paar 310 länglicher Stützarme 312 größer sein als ein Standard-Rack bis „1U“. Bei solchen Ausführungsbeispielen ermöglicht die erhöhte vertikale Distanz zwischen den Schlitten ein Anbringen größerer Wärmesenken an den physischen Ressourcen und ein Verwenden größerer Lüfter (z. B. in dem nachfolgend beschriebenen Lüfter-Array 370) zum Kühlen jedes Schlittens, was es wiederum erlauben kann, dass die physischen Ressourcen bei erhöhten Leistungspegeln arbeiten. Ferner wird darauf hingewiesen, dass das Rack 240 keine Wände, Einhäusungen oder Ähnliches umfasst. Vielmehr ist das Rack 240 ein einhäusungsloses Rack, das zu der lokalen Umgebung hin geöffnet ist. Natürlich kann in einigen Fällen eine Endplatte an einem der länglichen Stützpfosten 302, 304 angebracht sein, in jenen Situationen, in denen das Rack 240 ein Ende-der-Reihe-Rack in dem Rechenzentrum 100 bildet.
  • Bei einigen Ausführungsbeispielen können verschiedene Verbindungen durch die länglichen Stützpfosten 302, 304 nach oben oder unten geroutet sein. Um ein solches Routing zu ermöglichen, umfasst jeder längliche Stützpfosten 302, 304 eine innere Wand, die eine innere Kammer definiert, in der sich Verbindungen befinden können. Die Verbindungen, die durch die länglichen Stützpfosten 302, 304 geroutet sind, können als irgendeine Art von Verbindungen verkörpert sein, umfassend, aber nicht beschränkt auf, Daten- oder Kommunikationsverbindungen, um an jeden Schlitten-Schlitz 320 Kommunikationsverbindungen bereitzustellen, Leistungsverbindungen, um an jeden Schlitten-Schlitz 320 Leistung bereitzustellen, und/oder andere Arten von Verbindungen.
  • Das Rack 240 umfasst bei dem Ausführungsbeispiel eine Stützplattform, auf der ein entsprechender optischer Datenverbinder (nicht gezeigt) befestigt ist. Jeder optische Datenverbinder ist einem entsprechenden Schlitten-Schlitz 320 zugeordnet und ist ausgebildet, um mit einem optischen Datenverbinder eines entsprechenden Schlittens 400 zusammenzupassen, wenn der Schlitten 400 in dem entsprechenden Schlitten-Schlitz 320 empfangen wird. Bei einigen Ausführungsbeispielen werden optische Verbindungen zwischen Komponenten (z. B. Schlitten, Racks und Schalter) in dem Rechenzentrum 100 mit einer blind zusammenpassenden optischen Verbindung hergestellt. Beispielsweise kann eine Tür an jedem Kabel verhindern, dass Staub die Faser im Inneren des Kabels verunreinigt. Bei dem Prozess eines Verbindens mit einem blind zusammenpassenden optischen Verbindermechanismus wird die Tür geöffnet, wenn das Ende des Kabels sich dem Verbindermechanismus nähert oder in diesen eindringt. Anschließend kann die optische Faser innerhalb des Kabels in ein Gel innerhalb des Verbindermechanismus eindringen und die optische Faser eines Kabels kommt in Kontakt mit der optischen Faser eines anderen Kabels innerhalb des Gels im Inneren des Verbindermechanismus.
  • Das beispielhafte Rack 240 umfasst auch ein Lüfter-Array 370, das mit den Quer-Stützarmen des Racks 240 gekoppelt ist. Das Lüfter-Array 370 umfasst eine oder mehrere Reihen von Kühllüftern 372, die in einer horizontalen Linie zwischen den länglichen Stützpfosten 302, 304 ausgerichtet sind. Bei dem Ausführungsbeispiel umfasst das Lüfter-Array 370 eine Reihe von Kühllüftern 372 für jeden Schlitten-Schlitz 320 des Racks 240. Wie vorangehend erörtert wurde, umfasst jeder Schlitten 400 bei dem Ausführungsbeispiel nicht irgendein eingebautes Kühlsystem, und somit stellt das Lüfter-Array 370 an jeden in dem Rack 240 empfangenen Schlitten 400 Kühlung bereit. Jedes Rack 240 umfasst bei dem Ausführungsbeispiel auch eine Leistungsversorgung, die jedem Schlitten-Schlitz 320 zugeordnet ist. Jede Leistungsversorgung ist an einem der länglichen Stützarme 312 des Paares 310 von länglichen Stützarmen 312, die den entsprechenden Schlitten-Schlitz 320 definieren, befestigt. Zum Beispiel kann das Rack 240 eine Leistungsversorgung umfassen, die mit jedem länglichem Stützarm 312, der sich von dem länglichen Stützpfosten 302 erstreckt, gekoppelt oder an demselben gesichert ist. Jede Leistungsversorgung umfasst einen Leistungsverbinder, der ausgebildet ist, mit einem Leistungsverbinder des Schlittens 400 zusammenzupassen, wenn der Schlitten 400 in dem entsprechenden Schlitten-Schlitz 320 empfangen wird. Bei dem Ausführungsbeispiel umfasst der Schlitten 400 nicht irgendeine eingebaute Leistungsversorgung, und somit versorgen die Leistungsversorgungen, die in dem Rack 240 bereitgestellt sind, die entsprechenden Schlitten 400 mit Leistung, wenn sie an dem Rack 240 befestigt sind. Jede Leistungsversorgung ist ausgebildet, die Leistungsanforderungen für ihren zugeordneten Schlitten zu erfüllen, die von Schlitten zu Schlitten variieren können. Zusätzlich können die in dem Rack 240 bereitgestellten Leistungsversorgungen unabhängig voneinander arbeiten. Das heißt, innerhalb eines einzelnen Racks kann eine erste Leistungsversorgung, die an einen Rechenschlitten Leistung bereitstellt, Leistungspegel bereitstellen, die sich von den Leistungspegeln unterscheiden, die durch eine zweite Leistungsversorgung geliefert werden, die an einen Beschleunigerschlitten Leistung bereitstellt. Die Leistungsversorgungen können auf der Schlittenebene oder Rackebene steuerbar sein und können lokal durch Komponenten auf dem zugeordneten Schlitten oder aus der Ferne gesteuert werden, wie beispielsweise durch einen anderen Schlitten oder einen Orchestrator.
  • Bezug nehmend nun auf 6 ist der Schlitten 400 bei dem Ausführungsbeispiel ausgebildet, um in einem entsprechenden Rack 240 des Rechenzentrums 100 befestigt zu werden, wie vorangehend erörtert wurde. Bei einigen Ausführungsbeispielen kann jeder Schlitten 400 für die Ausführung bestimmter Aufgaben optimiert oder anderweitig konfiguriert sein, wie z. B. Rechenaufgaben, Beschleunigungsaufgaben, Datenspeicheraufgaben etc. Zum Beispiel kann der Schlitten 400 ausgeführt werden als ein Rechenschlitten 800, wie unten in Bezug auf 8-9 erörtert, ein Beschleunigungsschlitten 1000, wie unten in Bezug auf 10-11 erörtert, ein Speicherschlitten 1200, wie unten in Bezug auf 12-13, oder als Schlitten, der optimiert oder anderweitig konfiguriert wurde, um andere spezialisierte Aufgaben zu erfüllen, wie z. B. ein Speicherschlitten 1400, der unten in Bezug auf die 14 erörtert wird.
  • Wie vorangehend erörtert wurde, umfasst der beispielhafte Schlitten 400 ein gehäuseloses Schaltungsplatinensubstrat 602, das verschiedene physische Ressourcen (z. B. elektrische Komponenten) stützt, die darauf befestigt sind. Es wird darauf hingewiesen, dass das Schaltungsplatinensubstrat 602 insofern „gehäuselos“ ist, als der Schlitten 400 kein Gehäuse oder keine Einhäusung umfasst. Vielmehr ist das gehäuselose Schaltungsplatinensubstrat 602 offen zu der lokalen Umgebung hin. Das gehäuselose Schaltungsplatinensubstrat 602 kann aus irgendeinem Material gebildet werden, das in der Lage ist, die verschiedenen elektrischen Komponenten zu stützen, die darauf befestigt sind. Beispielsweise wird bei einem Ausführungsbeispiel das gehäuselose Schaltungsplatinensubstrat 602 aus einem FR-4 glasverstärkten Epoxid-Laminatmaterial gebildet. Natürlich können bei anderen Ausführungsbeispielen andere Materialien verwendet werden, um das gehäuselose Schaltungsplatinensubstrat 602 zu bilden.
  • Wie nachfolgend detaillierter erörtert ist, weist das gehäuselose Schaltungsplatinensubstrat 602 mehrere Merkmale auf, die die thermischen Kühlcharakteristika der verschiedenen elektrischen Komponenten, die auf dem gehäuselosen Schaltungsplatinensubstrat 602 befestigt sind, verbessern. Wie bereits erörtert, umfasst das gehäuselose Schaltungsplatinensubstrat 602 kein Gehäuse oder keine Einhäusung, was den Luftstrom über die elektrischen Komponenten des Schlittens 400 verbessern kann, indem es jene Strukturen reduziert, die einen Luftstrom behindern können. Zum Beispiel, da das gehäuselose Schaltungsplatinensubstrat 602 nicht in einem einzelnen Gehäuse oder einer einzelnen Einhäusung positioniert ist, gibt es keine vertikal angebrachte Rückwand (z. B. eine Rückplatte des Gehäuses), angebracht an dem gehäuselosen Schaltungsplatinensubstrat 602, die einen Luftstrom über die elektrischen Komponenten hinweg behindern könnte. Zusätzlich weist das gehäuselose Schaltungsplatinensubstrat 602 eine geometrische Form auf, die ausgebildet ist, die Länge des Luftstrompfades über die elektrischen Komponenten hinweg, die auf dem gehäuselosen Schaltungsplatinensubstrat 602 befestigt sind, zu reduzieren. Beispielsweise weist das beispielhafte gehäuselose Schaltungsplatinensubstrat 602 eine Breite 604 auf, die größer ist als eine Tiefe 606 des gehäuselosen Schaltungsplatinensubstrats 602. Bei einem bestimmten Ausführungsbeispiel weist zum Beispiel das gehäuselose Schaltungsplatinensubstrat 602 eine Breite von etwa 21 Zoll und eine Tiefe von etwa 9 Zoll auf, im Vergleich zu einem typischen Server, der eine Breite von etwa 17 Zoll und eine Tiefe von etwa 39 Zoll aufweist. Somit weist ein Luftstrompfad 608, der sich von einem vorderen Rand 610 des gehäuselosen Schaltungsplatinensubstrats 602 in Richtung eines hinteren Rands 612 erstreckt, relativ zu typischen Servern eine kürzere Distanz auf, was die thermischen Kühlcharakteristika des Schlittens 400 verbessern kann. Ferner, obgleich in 6 nicht dargestellt, sind die verschiedenen physischen Ressourcen, die auf dem gehäuselosen Schaltungsplatinensubstrat 602 befestigt sind, an entsprechenden Stellen befestigt, derart, dass sich keine zwei im Wesentlichen wärmeproduzierenden elektrischen Komponenten gegenseitig beschatten, wie nachfolgend detaillierter erörtert wird. Das heißt, keine zwei elektrischen Komponenten, die während des Betriebs merkliche Wärme produzieren (z. B. größer als eine Nennwärme, die ausreicht, um die Kühlung einer anderen elektrischen Komponente nachteilig zu beeinflussen), sind auf dem gehäuselosen Schaltungsplatinensubstrat 602 linear in Reihe zueinander entlang der Richtung des Luftstrompfads 608 (d. h. entlang einer Richtung, die sich von dem vorderen Rand 610 in Richtung des hinteren Randes 612 des gehäuselosen Schaltungsplatinensubstrats 602 erstreckt) befestigt.
  • Wie vorangehend erörtert wurde, umfasst der beispielhafte Schlitten 400 eine oder mehrere physische Ressourcen 620, die auf einer Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt sind. Obwohl zwei physische Ressourcen 620 in 6 gezeigt sind, wird darauf hingewiesen, dass der Schlitten 400 bei anderen Ausführungsbeispielen ein, zwei oder mehr physische Ressourcen 620 umfassen kann. Die physischen Ressourcen 620 können als irgendeine Art von Prozessor, Steuerung oder andere Rechenschaltung verkörpert sein, der/die in der Lage ist, verschiedene Aufgaben wie beispielsweise Rechenfunktionen und/oder ein Steuern der Funktionen des Schlittens 400 auszuführen, abhängig von, zum Beispiel, der Art oder der beabsichtigten Funktionalität des Schlittens 400. Zum Beispiel können, wie nachfolgend detaillierter erörtert, die physischen Ressourcen 620 ausgeführt sein als Hochperformance-Prozessoren bei Ausführungsbeispielen, bei denen der Schlitten 400 als ein Rechenschlitten ausgeführt ist, als Beschleuniger-Co-Prozessoren oder Schaltungen bei Ausführungsbeispielen, bei denen der Schlitten 400 als ein Beschleunigerschlitten ausgeführt ist, Speicherungssteuerungen bei Ausführungsbeispielen, bei denen der Schlitten 400 als ein Speicherungsschlitten ausgeführt ist, oder ein Satz von Speichervorrichtungen bei Ausführungsbeispielen, bei denen der Schlitten 400 als Speicherschlitten ausgeführt ist.
  • Der Schlitten 400 umfasst auch eine oder mehrere zusätzliche physische Ressourcen 630, die auf der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt sind. Bei dem Ausführungsbeispiel umfassen die zusätzlichen physischen Ressourcen eine Netzwerkschnittstellensteuerung (NIC; Network Interface Controller), wie nachfolgend detaillierter erörtert wird. Natürlich können abhängig von der Art und Funktionalität des Schlittens 400 die physischen Ressourcen 630 bei anderen Ausführungsbeispielen zusätzliche oder andere elektrische Komponenten, Schaltungen und/oder Vorrichtungen umfassen.
  • Die physischen Ressourcen 620 sind mit den physischen Ressourcen 630 via ein Eingang/Ausgang- (I/O-; input/output) Teilsystem 622 kommunikativ gekoppelt. Das I/O-Teilsystem 622 kann als eine Schaltungsanordnung und/oder Komponenten ausgeführt sein, um Eingabe-/Ausgabe-Operationen mit den physischen Ressourcen 620, den physischen Ressourcen 630 und/oder anderen Komponenten des Schlittens 400 zu ermöglichen. Zum Beispiel kann das I/O-Teilsystem 622 als Speichersteuerungs-Hubs, Eingabe/Ausgabe-Steuerungs-Hubs, Integrierter-Sensor-Hubs, Firmware-Vorrichtungen, Kommunikationslinks (z. B. Punkt-zu-Punkt-Links, Bus-Links, Drähte, Kabel, Wellenleiter, Lichtführungen, Gedruckte-Schaltungsplatinen-Leiterbahnen etc.) und/oder andere Komponenten und Teilsysteme, um die Eingabe-/Ausgabe-Operationen zu ermöglichen, ausgeführt sein oder diese anderweitig umfassen. Bei dem Ausführungsbeispiel ist das I/O-Teilsystem 622 als ein Doppeldatenrate-4- (DDR4-; double data rate 4) Datenbus oder ein DDR5-Datenbus ausgeführt oder umfasst dieselben anderweitig.
  • Bei einigen Ausführungsbeispielen kann der Schlitten 400 auch eine Ressource-zu-Ressource-Verbindung 624 umfassen. Die Ressource-zu-Ressource-Verbindung 624 kann als irgendeine Art von Kommunikationsverbindung ausgeführt sein, die in der Lage ist, Ressource-zu-Ressource-Kommunikationen zu ermöglichen. Bei dem Ausführungsbeispiel ist die Ressource-zu-Ressource-Verbindung 624 als eine Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung (z. B. schneller als das I/O-Teilsystem 622) ausgeführt. Zum Beispiel kann die Ressource-zu-Ressource-Verbindung 624 als eine QuickPath Interconnect (QPI), eine UltraPath Interconnect (UPI), PCI Express (PCIe) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung ausgeführt sein, die für Ressource-zu-Ressource-Kommunikationen dediziert ist.
  • Der Schlitten 400 umfasst auch einen Leistungsverbinder 640, der ausgebildet ist, mit einem entsprechenden Leistungsverbinder des Racks 240 zusammenzupassen, wenn der Schlitten 400 in dem entsprechenden Rack 240 befestigt ist. Der Schlitten 400 empfängt Leistung von einer Leistungsversorgung des Racks 240 via den Leistungsverbinder 640, um den verschiedenen elektrischen Komponenten des Schlittens 400 Leistung zu liefern. Das heißt, der Schlitten 400 umfasst nicht irgendeine lokale Leistungsversorgung (z. B. eine eingebaute Leistungsversorgung), um an die elektrischen Komponenten des Schlittens 400 Leistung bereitzustellen. Der Ausschluss einer lokalen oder eingebauten Leistungsversorgung erleichtert die Reduzierung der Gesamtgrundfläche des gehäuselosen Schaltungsplatinensubstrats 602, was die thermischen Kühlcharakteristika der verschiedenen elektrischen Komponenten, die auf dem gehäuselosen Schaltungsplatinensubstrat 602 befestigt sind, erhöhen kann, wie vorangehend erörtert wurde. Bei einigen Ausführungsbeispielen sind die Spannungsregler auf einer Unterseite 750 (siehe 7) des gehäuselosen Leiterplattensubstrats 602 direkt gegenüber den Prozessoren 820 (siehe 8) platziert, und die Leistung wird von den Spannungsreglern zu den Prozessoren 820 durch Vias geroutet, die sich durch das Leiterplattensubstrat 602 erstrecken. Eine solche Konfiguration stellt ein erhöhtes thermisches Budget, zusätzlichen Strom und/oder Spannung und eine bessere Spannungssteuerung relativ zu typischen gedruckten Schaltungsplatinen bereit, bei denen die Prozessorleistung von einem Spannungsregler teilweise durch gedruckte Schaltungs-Leiterbahnen geliefert wird.
  • Bei einigen Ausführungsbeispielen kann der Schlitten 400 auch Befestigungsmerkmale 642 umfassen, die ausgebildet sind, mit einem Befestigungsarm oder einer anderen Struktur eines Roboters zusammenzupassen, um das Platzieren des Schlittens 600 in einem Rack 240 durch den Roboter zu ermöglichen. Die Befestigungsmerkmale 642 können als irgendeine Art physischer Strukturen ausgeführt sein, die es dem Roboter erlauben, den Schlitten 400 zu begreifen, ohne das gehäuselose Schaltungsplatinensubstrat 602 oder die darauf befestigten elektrischen Komponenten zu beschädigen. Zum Beispiel können bei einigen Ausführungsbeispielen die Befestigungsmerkmale 642 als nicht-leitfähige Anschlussflächen, die an dem gehäuselosen Schaltungsplatinensubstrat 602 angebracht sind, ausgeführt sein. Bei anderen Ausführungsbeispielen können die Befestigungsmerkmale als Klammern, Spangen oder ähnliche Strukturen, die an dem gehäuselosen Schaltungsplatinensubstrat 602 angebracht sind, ausgeführt sein. Die bestimmte Anzahl, Form, Größe und/oder Zusammensetzung des Befestigungsmerkmals 642 kann von dem Entwurf des Roboters abhängen, der ausgebildet ist, den Schlitten 400 zu managen.
  • Bezug nehmend nun auf 7 umfasst der Schlitten 400 zusätzlich zu den physischen Ressourcen 630, die auf der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt sind, auch eine oder mehrere Speichervorrichtungen 720, die an einer Unterseite 750 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt sind. Das heißt, das gehäuselose Schaltungsplatinensubstrat 602 ist als eine doppelseitige Schaltungsplatine ausgeführt. Die physischen Ressourcen 620 sind mit den Speichervorrichtungen 720 via das I/O-Teilsystem 622 kommunikativ gekoppelt. Zum Beispiel können die physischen Ressourcen 620 und die Speichervorrichtungen 720 durch ein oder mehrere Vias, die sich durch das gehäuselose Schaltungsplatinensubstrat 602 erstrecken, kommunikativ gekoppelt sein. Jede physische Ressource 620 kann bei einigen Ausführungsbeispielen mit einem unterschiedlichen Satz von einer oder mehreren Speichervorrichtungen 720 kommunikativ gekoppelt sein. Alternativ kann bei anderen Ausführungsbeispielen jede physische Ressource 620 kommunikativ mit jeder Speichervorrichtung 720 gekoppelt sein.
  • Die Speichervorrichtungen 720 können als irgendeine Art von Speichervorrichtung ausgeführt sein, die in der Lage ist, Daten für die physischen Ressourcen 620 während des Betriebs des Schlittens 400 zu speichern, wie beispielsweise irgendeine Art von flüchtigem (z. B. dynamischer Direktzugriffsspeicher (DRAM; dynamic random access memory) etc.) oder nichtflüchtigem Speicher. Ein flüchtiger Speicher kann ein Speicherungsmedium sein, das Leistung benötigt, um den Zustand von durch das Medium gespeicherten Daten aufrechtzuerhalten. Nicht einschränkende Beispiele für flüchtigen Speicher können verschiedene Arten von Direktzugriffsspeicher (RAM; random access memory) umfassen, wie beispielsweise dynamischen Direktzugriffsspeicher (DRAM) oder statischen Direktzugriffsspeicher (SRAM; static random access memory). Eine bestimmte Art von DRAM, die in einem Speichermodul verwendet werden kann, ist ein synchroner dynamischer Direktzugriffsspeicher (SDRAM; synchronous dynamic random access memory). Bei bestimmten Ausführungsbeispielen kann der DRAM einer Speicherkomponente einem durch JEDEC veröffentlichten Standard entsprechen, wie beispielsweise JESD79F für DDR SDRAM, JESD79-2F für DDR2 SDRAM, JESD79-3F für DDR3 SDRAM, JESD79-4A für DDR4 SDRAM, JESD209 für Low Power DDR (LPDDR), JESD209-2 für LPDDR2, JESD209-3 für LPDDR3 und JESD209-4 for LPDDR4. Solche Standards (und ähnliche Standards) können als DDR-basierte Standards bezeichnet werden und Kommunikationsschnittstellen der Speicherungsvorrichtungen, die solche Standards implementieren, können als DDR-basierte Schnittstellen bezeichnet werden.
  • Bei einem Ausführungsbeispiel ist die Speichervorrichtung eine blockadressierbare Speichervorrichtung, wie beispielsweise jene, die auf NAND- oder NOR-Technologien basieren. Ein Block kann irgendeine Größe aufweisen, wie beispielsweise, aber nicht beschränkt auf z. B. 2KB, 4KB, 8KB und so weiter. Eine Speichervorrichtung kann auch nichtflüchtige Vorrichtungen der nächsten Generation umfassen, wie beispielsweise Intel Optane® Speicher oder andere byteadressierbare Write-in-Place- nichtflüchtige Speichervorrichtungen. Bei einem Ausführungsbeispiel kann die Speichervorrichtung Speichervorrichtungen sein oder umfassen, die Chalkogenidglas, Multi-Schwellenpegel-NAND-Flash-Speicher, NOR-Flash-Speicher, Single- oder Multi-Level-Phasenwechselspeicher (PCM; Phase Change Memory), einen resistiven Speicher, Nanodraht-Speicher, ferroelektrischen Transistor-Direktzugriffsspeicher (FeTRAM; ferroelectric transistor random access memory), antiferroelektrischen Speicher, magnetoresistiven Direktzugriffsspeicher (MRAM; magnetoresistive random access memory), der Memristor-Technologie einbringt, resistiven Speicher, umfassend die Metalloxidbasis, die Sauerstoffleerstellenbasis und den Leitfähige-Brücken-Direktzugriffsspeicher (CB-RAM; conductive bridge Random Access Memory), oder Spin-Transfer-Torque- (STT) MRAM, eine Spintronik-Magnetübergangsspeicher-basierte Vorrichtung, eine Magnet-Tunnelübergang (MTJ-; magnetic tunneling junction) basierte Vorrichtung, eine DW- (Domain Wall-) und Spin-Bahn-Transfer- (SOT-; Spin Orbit Transfer) basierte Vorrichtung, eine thyristorbasierte Speichervorrichtung oder eine Kombination von irgendwelchen aus den vorstehend Genannten oder einen anderen Speicher verwenden. Die Speichervorrichtung kann sich auf den Die selbst und/oder auf ein gehäustes Speicherprodukt beziehen. Bei einigen Ausführungsbeispielen kann die Speichervorrichtung eine transistorlose, stapelbare Kreuzpunktarchitektur umfassen, bei der Speicherzellen an dem Schnittpunkt von Wortleitungen und Bitleitungen sitzen und individuell adressierbar sind und wobei Bitspeicherung auf einer Veränderung des Bulk-Widerstands basiert.
  • Bezug nehmend nun auf 8 kann der Schlitten 400 bei einigen Ausführungsbeispielen als ein Rechenschlitten 800 ausgeführt sein. Der Rechenschlitten 800 ist optimiert, oder anderweitig ausgebildet, um Rechenaufgaben auszuführen. Natürlich kann der Rechenschlitten 800, wie vorangehend erörtert wurde, sich auf andere Schlitten verlassen, wie beispielsweise Beschleunigungsschlitten und/oder Speicherungsschlitten, um solche Rechenaufgaben auszuführen. Der Rechenschlitten 800 umfasst verschiedene physische Ressourcen (z. B. elektrische Komponenten), die ähnlich zu den physischen Ressourcen des Schlittens 400 sind, die in 8 unter Verwendung derselben Bezugszeichen identifiziert wurden. Die Beschreibung solcher Komponenten, die vorangehend in Bezug auf 6 und 7 bereitgestellt wurde, ist anwendbar auf die entsprechenden Komponenten des Rechenschlittens 800 und wird hierin der Klarheit der Beschreibung des Rechenschlittens 800 halber nicht wiederholt.
  • Bei dem beispielhaften Rechenschlitten 800 sind die physischen Ressourcen 620 als Prozessoren 820 ausgeführt. Obwohl nur zwei Prozessoren 820 in 8 gezeigt sind, wird darauf hingewiesen, dass der Rechenschlitten 800 bei anderen Ausführungsbeispielen zusätzliche Prozessoren 820 umfassen kann. Darstellenderweise sind die Prozessoren 820 als Hochperformance-Prozessoren 820 ausgeführt und können ausgebildet sein, mit einer relativ hohen Nennleistung zu arbeiten. Obwohl die Prozessoren 820 bei einem Arbeiten mit Nennleistungen, die höher sind als typische Prozessoren (die mit etwa 155-230 W arbeiten), zusätzliche Wärme erzeugen, erleichtern die vorangehend erörterten verbesserten thermischen Kühlcharakteristika des gehäuselosen Schaltungsplatinensubstrats 602 den Höhere-Leistung-Betrieb. Zum Beispiel sind bei dem Ausführungsbeispiel die Prozessoren 820 ausgebildet, bei einer Nennleistung von zumindest 250 W zu arbeiten. Bei einigen Ausführungsbeispielen können die Prozessoren 820 ausgebildet sein, bei einer Nennleistung von zumindest 350 W zu arbeiten.
  • Bei einigen Ausführungsbeispielen kann der Rechenschlitten 800 auch eine Prozessor-zu-Prozessor-Verbindung 842 umfassen. Ähnlich zu der Ressource-zu-Ressource-Verbindung 624 des vorangehend erörterten Schlittens 400, kann die Prozessor-zu-Prozessor-Verbindung 842 als irgendeine Art von Kommunikationsverbindung ausgeführt sein, die in der Lage ist, Prozessor-zu Prozessor-Verbindungs 842 -Kommunikationen zu ermöglichen. Bei dem Ausführungsbeispiel ist die Prozessor-zu-Prozessor-Verbindung 842 als eine Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung (z. B. schneller als das I/O-Teilsystem 622) ausgeführt. Zum Beispiel kann die Prozessor-zu-Prozessor-Verbindung 842 als eine QuickPath Interconnect (QPI), eine UltraPath Interconnect (UPI) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung sein, die für Prozessor-zu-Prozessor-Kommunikationen (z. B. PCIe) dediziert ist.
  • Der Rechenschlitten 800 umfasst auch eine Kommunikationsschaltung 830. Die beispielhafte Kommunikationsschaltung 830 umfasst eine Netzwerkschnittstellensteuerung (NIC; network interface controller) 832, die auch als eine Host-Struktur-Schnittstelle (HFI; host fabric interface) bezeichnet werden kann. Die NIC 832 kann als irgendeine Art von integrierter Schaltung, diskreten Schaltungen, Steuerungschips, Chipsätzen, Add-in-Platinen, Tochterkarten, Netzwerkschnittstellenkarten oder anderen Vorrichtungen, die durch den Rechenschlitten 800 verwendet werden können, um sich mit einer anderen Rechenvorrichtung (z. B. mit anderen Schlitten 400) zu verbinden, ausgeführt sein oder diese anderweitig umfassen. Bei einigen Ausführungsbeispielen kann die NIC 832 als Teil eines Systems-auf-einem-Chip (SoC; systemon-a-chip), das einen oder mehrere Prozessoren umfasst, ausgeführt sein, oder auf einem Multi-Chip-Package, das auch einen oder mehrere Prozessoren umfasst, umfasst sein. Bei einigen Ausführungsbeispielen kann die NIC 832 einen lokalen Prozessor (nicht gezeigt) und/oder einen lokalen Speicher (nicht gezeigt) umfassen, die beide lokal zu der NIC 832 sind. Bei solchen Ausführungsbeispielen kann der lokale Prozessor der NIC 832 in der Lage sein, eine oder mehrere der Funktionen des Prozessors 820 auszuführen. Zusätzlich oder alternativ kann bei solchen Ausführungsbeispielen der lokale Speicher der NIC 832 in eine oder mehrere Komponenten des Rechenschlittens auf der Platinenebene, Buchsenebene, Chip-Ebene und/oder anderen Ebenen integriert sein. Bei einigen Beispielen umfasst eine Netzwerkschnittstelle eine Netzwerkschnittstellensteuerung oder eine Netzwerkschnittstellenkarte. Bei einigen Beispielen kann eine Netzwerkschnittstelle eine oder mehrere von einer Netzwerkschnittstellensteuerung (NIC) 832, einer Host-Struktur-Schnittstelle (HFI), einem Host-Bus-Adapter (HBA), einer Netzwerkschnittstelle, die mit einem Bus oder einer Verbindung (z. B. PCIe, CXL, DDR usw.) verbunden ist, umfassen. Bei einigen Beispielen kann eine Netzwerkschnittstelle Teil eines Schalters (switch) oder eines System-auf-Chip (SoC) sein.
  • Die Kommunikationsschaltung 830 ist kommunikativ mit einem optischen Datenverbinder 834 gekoppelt. Der optische Datenverbinder 834 ist ausgebildet, mit einem entsprechenden optischen Datenverbinder des Racks 240 zusammenzupassen, wenn der Rechenschlitten 800 in dem Rack 240 befestigt ist. Darstellenderweise umfasst der optische Datenverbinder 834 eine Mehrzahl von optischen Fasern, die von einer zusammenpassenden Oberfläche des optischen Datenverbinders 834 zu einem optischen Sendeempfänger 836 führen. Der optische Sendeempfänger 836 ist ausgebildet, eingehende optische Signale von dem rackseitigen optischen Datenverbinder in elektrische Signale umzuwandeln und elektrische Signale in ausgehende optische Signale zu dem rackseitigen optischen Datenverbinder umzuwandeln. Obwohl der optische Sendeempfänger 836 bei dem Ausführungsbeispiel als einen Teil des optischen Datenverbinders 834 bildend gezeigt ist, kann er bei anderen Ausführungsbeispielen einen Abschnitt der Kommunikationsschaltung 830 bilden.
  • Bei einigen Ausführungsbeispielen kann der Rechenschlitten 800 auch einen Erweiterungsverbinder 840 umfassen. Bei solchen Ausführungsbeispielen ist der Erweiterungsverbinder 840 ausgebildet, mit einem entsprechenden Verbinder eines gehäuselosen Erweiterungsschaltungsplatinensubstrats zusammenzupassen, um an den Rechenschlitten 800 zusätzliche physische Ressourcen bereitzustellen. Die zusätzlichen physischen Ressourcen können zum Beispiel von den Prozessoren 820 während eines Betriebs des Rechenschlittens 800 verwendet werden. Das gehäuselose Erweiterungsschaltungsplatinensubstrat kann im Wesentlichen ähnlich zu dem vorangehend erörterten gehäuselosen Schaltungsplatinensubstrat 602 sein und kann verschiedene elektrische Komponenten umfassen, die daran befestigt sind. Die bestimmten elektrischen Komponenten, die an dem gehäuselosen Erweiterungsschaltungsplatinensubstrat befestigt sind, können von der beabsichtigten Funktionalität des gehäuselosen Erweiterungsschaltungsplatinensubstrats abhängen. Beispielsweise kann das gehäuselose Erweiterungsschaltungsplatinensubstrat zusätzliche Rechenressourcen, Speicherressourcen und/oder Speicherungsressourcen bereitstellen. Als solche können die zusätzlichen physischen Ressourcen des gehäuselosen Erweiterungsschaltungsplatinensubstrats Prozessoren, Speichervorrichtungen, Speicherungsvorrichtungen und/oder Beschleunigerschaltungen, umfassend, zum Beispiel feldprogrammierbare Gate-Arrays (FPGA; field programmable gate array), anwendungsspezifische integrierte Schaltungen (ASICs; application-specific integrated circuits), Sicherheits-Co-Prozessoren, Grafikverarbeitungseinheiten (GPUs; graphics processing units), Maschinelles-Lernen-Schaltungen oder andere spezialisierte Prozessoren, Steuerungen, Vorrichtungen und/oder Schaltungen umfassen, sind aber nicht darauf beschränkt.
  • Bezug nehmend auf 9 ist ein Ausführungsbeispiel des Rechenschlittens 800 gezeigt. Wie gezeigt ist, sind die Prozessoren 820, die Kommunikationsschaltung 830 und der optische Datenverbinder 834 an der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt. Irgendeine geeignete Anbringungs- oder Befestigungstechnologie kann verwendet werden, um die physischen Ressourcen des Rechenschlittens 800 an dem gehäuselosen Schaltungsplatinensubstrat 602 zu befestigen. Zum Beispiel können die verschiedenen physischen Ressourcen in entsprechenden Buchsen (z. B. einer Prozessorbuchse), Halterungen oder Klammern befestigt sein. In einigen Fällen können einige der elektrischen Komponenten via Löten oder ähnlicher Techniken direkt an dem gehäuselosen Schaltungsplatinensubstrat 602 befestigt sein.
  • Wie vorangehend erörtert wurde, sind die individuellen Prozessoren 820 und die Kommunikationsschaltung 830 an der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 derart befestigt, dass sich keine zwei wärmeproduzierenden, elektrischen Komponenten gegenseitig beschatten. Bei dem Ausführungsbeispiel sind die Prozessoren 820 und die Kommunikationsschaltung 830 an entsprechenden Stellen auf der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 derart befestigt, dass keine zwei dieser physischen Ressourcen linear in einer Reihe mit anderen entlang der Richtung des Luftstrompfads 608 sind. Es wird darauf hingewiesen, dass, obwohl der optische Datenverbinder 834 in einer Reihe mit der Kommunikationsschaltung 830 ist, der optische Datenverbinder 834 im Betrieb keine oder nominale Wärme erzeugt.
  • Die Speichervorrichtungen 720 des Rechenschlittens 800 sind an der Unterseite 750 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt, wie vorangehend Bezug nehmend auf den Schlitten 400 erörtert wurde. Obgleich sie an der Unterseite 750 befestigt sind, sind die Speichervorrichtungen 720 via das I/O-Teilsystem 622 kommunikativ mit den Prozessoren 820 gekoppelt, die auf der Oberseite 650 positioniert sind. Da das gehäuselose Schaltungsplatinensubstrat 602 als eine doppelseitige Schaltungsplatine ausgeführt ist, können die Speichervorrichtungen 720 und die Prozessoren 820 durch ein oder mehrere Vias, Verbinder oder andere Mechanismen, die sich durch das gehäuselose Schaltungsplatinensubstrat 602 erstrecken, kommunikativ gekoppelt sein. Natürlich kann jeder Prozessor 820 bei einigen Ausführungsbeispielen mit einem unterschiedlichen Satz von einer oder mehreren Speichervorrichtungen 720 kommunikativ gekoppelt sein. Alternativ kann bei anderen Ausführungsbeispielen jeder Prozessor 820 kommunikativ mit jeder Speichervorrichtung 720 gekoppelt sein. Bei einigen Ausführungsbeispielen können die Speichervorrichtungen 720 an einer oder mehreren Speichermezzaninen auf der Unterseite des gehäuselosen Schaltungsplatinensubstrats 602 befestigt sein und können mit einem entsprechenden Prozessor 820 durch ein Kugelgitter-Array verbunden sein.
  • Jeder der Prozessoren 820 umfasst eine daran befestigte Wärmesenke 850. Durch das Befestigen der Speichervorrichtungen 720 an der Unterseite 750 des gehäuselosen Schaltungsplatinensubstrats 602 (sowie das vertikale Beabstanden der Schlitten 400 in dem entsprechenden Rack 240) umfasst die Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 zusätzlichen „freien“ Bereich oder Raum, der die Verwendung von Wärmesenken 850 erleichtert, die eine größere Größe relativ zu traditionellen Wärmesenken aufweisen, die in typischen Servern verwendet werden. Zusätzlich umfassen aufgrund der verbesserten thermischen Kühlcharakteristika des gehäuselosen Schaltungsplatinensubstrats 602 keine der Prozessor-Wärmesenken 850 Kühllüfter, die daran angebracht sind. Das heißt, jede der Wärmesenken 850 ist als eine lüfterlose Wärmesenke ausgeführt. Bei einigen Ausführungsbeispielen können sich die Wärmesenken 850, die auf den Prozessoren 820 befestigt sind, mit der Wärmesenke überlappen, die an der Kommunikationsschaltung 830 in Richtung des Luftstrompfads 608 angebracht ist, aufgrund ihrer erhöhten Größe, wie durch 9 veranschaulichend vorgeschlagen.
  • Bezug nehmend auf 10 kann der Schlitten 400 bei einigen Ausführungsbeispielen als ein Beschleunigerschlitten 1000 ausgeführt sein. Der Beschleunigerschlitten 1000 ist ausgebildet, spezialisierte Rechenaufgaben, wie beispielsweise maschinelles Lernen, Verschlüsselung, Hashing oder andere rechenintensive Aufgaben, auszuführen. Bei einigen Ausführungsbeispielen kann zum Beispiel ein Rechenschlitten 800 im Betrieb Aufgaben an den Beschleunigerschlitten 1000 auslagern (offload). Der Beschleunigerschlitten 1000 umfasst verschiedene Komponenten, die ähnlich zu den Komponenten des Schlittens 400 und/oder des Rechenschlittens 800 sind, die in 10 unter Verwendung derselben Bezugszeichen identifiziert wurden. Die Beschreibung solcher Komponenten, die vorangehend in Bezug auf 6, 7 und 8 bereitgestellt wurde, ist anwendbar für die entsprechenden Komponenten des Beschleunigerschlittens 1000 und wird hierin der Klarheit der Beschreibung des Beschleunigerschlittens 1000 halber nicht wiederholt.
  • Bei dem beispielhaften Beschleunigerschlitten 1000 sind die physischen Ressourcen 620 als Beschleunigerschaltungen 1020 ausgeführt. Obgleich nur zwei Beschleunigerschaltungen 1020 in 10 gezeigt sind, wird darauf hingewiesen, dass der Beschleunigerschlitten 1000 bei anderen Ausführungsbeispielen zusätzliche Beschleunigerschaltungen 1020 umfassen kann. Beispielsweise kann, wie in 11 gezeigt, der Beschleunigerschlitten 1000 bei einigen Ausführungsbeispielen vier Beschleunigerschaltungen 1020 umfassen. Die Beschleunigerschaltungen 1020 können als irgendeine Art von Prozessor, Co-Prozessor, Rechenschaltung oder andere Vorrichtung, die in der Lage ist, Rechen- oder Verarbeitungsoperationen durchzuführen, ausgeführt sein. Zum Beispiel können die Beschleunigerschaltungen 1020 beispielsweise als zentrale Verarbeitungseinheiten, Kerne, feldprogrammierbare Gate-Arrays (FPGA), anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Steuerlogik (PCL; programmable control logic), Sicherheits-Co-Prozessoren, Grafikverarbeitungseinheiten (GPUs), neuromorphe Prozessoreinheiten, Quantencomputer, Maschinelles-Lernen-Schaltungen oder andere spezialisierte Prozessoren, Steuerungen, Vorrichtungen und/oder Schaltungen ausgeführt sein.
  • Bei einigen Ausführungsbeispielen kann der Beschleunigerschlitten 1000 auch eine Beschleuniger-zu-Beschleuniger-Verbindung 1042 umfassen. Ähnlich zu der Ressource-zu-Ressource-Verbindung 624 des vorangehend erörterten Schlittens 600 kann die Beschleuniger-zu-Beschleuniger-Verbindung 1042 als irgendeine Art von Kommunikationsverbindung ausgeführt sein, die in der Lage ist, Beschleuniger-zu-Beschleuniger-Kommunikationen zu ermöglichen. Bei dem Ausführungsbeispiel ist die Beschleuniger-zu-Beschleuniger-Verbindung 1042 als eine Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung (z. B. schneller als das I/O-Teilsystem 622) ausgeführt. Zum Beispiel kann die Beschleuniger-zu-Beschleuniger-Verbindung 1042 als eine QuickPath Interconnect (QPI), eine UltraPath Interconnect (UPI) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung ausgeführt sein, die für Prozessor-zu-Prozessor-Kommunikationen dediziert ist. Bei einigen Ausführungsbeispielen können die Beschleunigerschaltungen 1020 mit einer primären Beschleunigerschaltung 1020, die durch das I/O-Teilsystem 622 mit der NIC 832 und dem Speicher 720 verbunden ist, und einer sekundären Beschleunigerschaltung 1020, die durch eine primäre Beschleunigerschaltung 1020 mit der NIC 832 und dem Speicher 720 verbunden ist, als Daisy-Chain verbunden sein.
  • Bezug nehmend nun auf 11 ist ein Ausführungsbeispiel des Beschleunigerschlittens 1000 gezeigt. Wie vorangehend erörtert wurde, sind die Beschleunigerschaltungen 1020, die Kommunikationsschaltung 830 und der optische Datenverbinder 834 an der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt. Wiederum sind die individuellen Beschleunigerschaltungen 1020 und die Kommunikationsschaltung 830 an der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 derart befestigt, dass sich keine zwei wärmeproduzierenden, elektrischen Komponenten gegenseitig beschatten, wie vorangehend erörtert wurde. Die Speichervorrichtungen 720 des Beschleunigerschlittens 1000 sind an der Unterseite 750 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt, wie vorangehend Bezug nehmend auf den Schlitten 600 erörtert wurde. Obgleich sie an der Unterseite 750 befestigt sind, sind die Speichervorrichtungen 720 via das I/O-Teilsystem 622 (z. B. durch Vias) kommunikativ mit den Beschleunigerschaltungen 1020 gekoppelt, die auf der Oberseite 650 positioniert sind. Ferner kann jede der Beschleunigerschaltungen 1020 eine Wärmesenke 1070 umfassen, die größer ist als eine traditionelle Wärmesenke, die in einem Server verwendet wird. Wie vorangehend Bezug nehmend auf die Wärmesenken 870 erörtert wurde, können die Wärmesenken 1070 größer als traditionelle Wärmesenken sein, aufgrund des „freien“ Bereichs, der durch die Speicherressourcen 720 bereitgestellt ist, die sich auf der Unterseite 750 des gehäuselosen Schaltungsplatinensubstrats 602 anstatt auf der Oberseite 650 befinden sind.
  • Bezug nehmend nun auf 12 kann der Schlitten 400 bei einigen Ausführungsbeispielen als ein Speicherungsschlitten 1200 ausgeführt sein. Der Speicherungsschlitten 1200 ist ausgebildet, Daten in einer Datenspeicherung 1250 zu speichern, die lokal zu dem Speicherungsschlitten 1200 ist. Zum Beispiel kann ein Rechenschlitten 800 oder ein Beschleunigerschlitten 1000 im Betrieb Daten von der Datenspeicherung 1250 des Speicherungsschlittens 1200 speichern und abrufen. Der Speicherungsschlitten 1200 umfasst verschiedene Komponenten, die ähnlich zu den Komponenten des Schlittens 400 und/oder des Rechenschlittens 800 sind, die in 12 unter Verwendung derselben Bezugszeichen identifiziert wurden. Die Beschreibung solcher Komponenten, die vorangehend in Bezug auf 6, 7 und 8 bereitgestellt wurde, ist anwendbar auf die entsprechenden Komponenten des Speicherungsschlittens 1200 und wird hierin der Klarheit der Beschreibung des Speicherungsschlittens 1200 halber nicht wiederholt.
  • Bei dem beispielhaften Speicherungsschlitten 1200 sind die physischen Ressourcen 620 als Speicherungssteuerungen 1220 ausgeführt. Obgleich nur zwei Speicherungssteuerungen 1220 in 12 gezeigt sind, wird darauf hingewiesen, dass der Speicherungsschlitten 1200 bei anderen Ausführungsbeispielen zusätzliche Speicherungssteuerungen 1220 umfassen kann. Die Speicherungssteuerungen 1220 können als irgendeine Art von Prozessor, Steuerung oder Steuerschaltung ausgeführt sein, die in der Lage ist, die Speicherung und den Abruf von Daten in die Datenspeicherung 1250 basierend auf Anforderungen, die über die Kommunikationsschaltung 830 empfangen werden, zu steuern. Bei dem Ausführungsbeispiel sind die Speicherungssteuerungen 1220 als relative Niedrigleistungs-Prozessoren oder -Steuerungen ausgeführt. Zum Beispiel können bei einigen Ausführungsbeispielen die Speicherungssteuerungen 1220 ausgebildet sein, bei einer Nennleistung von etwa 75 Watt zu arbeiten.
  • Bei einigen Ausführungsbeispielen kann der Speicherungsschlitten 1200 auch eine Steuerung-zu-Steuerung-Verbindung 1242 umfassen. Ähnlich zu der Ressource-zu-Ressource-Verbindung 624 des vorangehend erörterten Schlittens 400, kann die Steuerung-zu-Steuerung-Verbindung 1242 als irgendeine Art von Kommunikationsverbindung ausgeführt sein, die in der Lage ist, Steuerung-zu-Steuerung-Kommunikationen zu ermöglichen. Bei dem Ausführungsbeispiel ist die Steuerung-zu-Steuerung-Verbindung 1242 als eine Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung (z. B. schneller als das I/O-Teilsystem 622) ausgeführt. Zum Beispiel kann die Steuerung-zu-Steuerung-Verbindung 1242 als eine QuickPath Interconnect (QPI), eine UltraPath Interconnect (UPI) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung ausgeführt sein, die für Prozessor-zu-Prozessor-Kommunikationen dediziert ist.
  • Bezug nehmend nun auf 13 ist ein Ausführungsbeispiel des Speicherungsschlittens 1200 gezeigt. Bei dem Ausführungsbeispiel ist die Datenspeicherung 1250 als ein Speicherungskäfig 1252 ausgeführt, der ausgebildet ist, ein oder mehrere Solid-State-Laufwerke (SSDs) 1254 zu häusen, oder umfasst diesen anderweitig. Zu diesem Zweck umfasst der Speicherungskäfig 1252 eine Anzahl von Befestigungsschlitzen 1256, die jeweils ausgebildet sind, ein entsprechendes Solid-State-Laufwerk 1254 zu empfangen. Jeder der Befestigungsschlitze 1256 umfasst eine Anzahl von Laufwerkführungen 1258, die zusammenwirken, um eine Zugriffsöffnung 1260 des entsprechenden Befestigungsschlitzes 1256 zu definieren. Der Speicherungskäfig 1252 ist so auf dem gehäuselosen Schaltungsplatinensubstrat 602 befestigt, dass die Zugriffsöffnungen von dem gehäuselosen Schaltungsplatinensubstrat 602 weg (d. h. in Richtung der Vorderseite) zeigen. Somit sind die Solid-State-Laufwerke 1254 zugänglich, während der Speicherungsschlitten 1200 in einem entsprechenden Rack 204 befestigt ist. Zum Beispiel kann ein Solid-State-Laufwerk 1254 aus einem Rack 240 (z. B. via einen Roboter) ausgelagert werden, während der Speicherungsschlitten 1200 in dem entsprechenden Rack 240 befestigt bleibt.
  • Der Speicherungskäfig 1252 umfasst darstellenderweise sechzehn Befestigungsschlitze 1256 und ist in der Lage, sechzehn Solid-State-Laufwerke 1254 zu befestigen und zu lagern. Natürlich kann der Speicherungskäfig 1252 bei anderen Ausführungsbeispielen ausgebildet sein, zusätzliche oder weniger Solid-State-Laufwerke 1254 zu lagern. Zusätzlich sind Bei dem Ausführungsbeispiel die Solid-State-Treiber vertikal in dem Speicherungskäfig 1252 befestigt, können aber bei anderen Ausführungsbeispielen in einer unterschiedlichen Orientierung in dem Speicherungskäfig 1252 befestigt sein. Jedes Solid-State-Laufwerk 1254 kann als irgendeine Art von Datenspeicherungsvorrichtung ausgeführt sein, die in der Lage ist, Langzeitdaten zu speichern. Zu diesem Zweck können die Solid-State-Laufwerke 1254 flüchtige und nichtflüchtige Speichervorrichtungen umfassen, die vorangehend erörtert wurden.
  • Wie in 13 gezeigt ist, sind die Speicherungssteuerungen 1220, die Kommunikationsschaltung 830 und der optische Datenverbinder 834 darstellenderweise an der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt. Wiederum kann, wie vorangehend erörtert wurde, irgendeine geeignete Anbringungs- oder Befestigungstechnologie verwendet werden, um die elektrischen Komponenten des Speicherungsschlittens 1200 an dem gehäuselosen Schaltungsplatinensubstrat 602 zu befestigen, umfassend zum Beispiel Buchsen (z. B. eine Prozessorbuchse), Halterungen, Klammern, gelötete Verbindungen und/oder andere Befestigungs- oder Sicherungstechniken.
  • Wie vorangehend erörtert wurde, sind die individuellen Speicherungssteuerungen 1220 und die Kommunikationsschaltung 830 an der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 derart befestigt, dass sich keine zwei wärmeproduzierenden, elektrischen Komponenten gegenseitig beschatten. Zum Beispiel sind die Speicherungssteuerungen 1220 und die Kommunikationsschaltung 830 an entsprechenden Stellen auf der Oberseite 650 des gehäuselosen Schaltungsplatinensubstrats 602 derart befestigt, dass keine zwei dieser elektrischen Komponenten linear in einer Reihe zueinander entlang der Richtung des Luftstrompfads 608 sind.
  • Die Speichervorrichtungen 720 des Speicherungsschlittens 1200 sind an der Unterseite 750 des gehäuselosen Schaltungsplatinensubstrats 602 befestigt, wie vorangehend Bezug nehmend auf den Schlitten 400 erörtert wurde. Obgleich sie an der Unterseite 750 befestigt sind, sind die Speichervorrichtungen 720 via das I/O-Teilsystem 622 kommunikativ mit den Speicherungssteuerungen 1220 gekoppelt, die sich auf der Oberseite 650 befinden. Da das gehäuselose Schaltungsplatinensubstrat 602 als eine doppelseitige Schaltungsplatine ausgeführt ist, können die Speichervorrichtungen 720 und die Speicherungssteuerungen 1220 wiederum durch eines oder mehrere Vias, Verbinder oder andere Mechanismen, die sich durch das gehäuselose Schaltungsplatinensubstrat 602 erstrecken, kommunikativ gekoppelt sein. Jede der Speicherungssteuerungen 1220 umfasst eine daran befestigte Wärmesenke 1270. Wie vorangehend erörtert wurde, umfasst aufgrund der verbesserten thermischen Kühlcharakteristika des gehäuselosen Schaltungsplatinensubstrats 602 des Speicherungsschlittens 1200 keine der Wärmesenken 1270 Kühllüfter, die daran angebracht sind. Das heißt, jede der Wärmesenken 1270 ist als eine lüfterlose Wärmesenke ausgeführt.
  • Bezug nehmend auf 14 kann der Schlitten 400 bei einigen Ausführungsbeispielen als ein Speicherschlitten 1400 (memory sled) ausgeführt sein. Der Speicherungsschlitten 1400 (storage sled) ist optimiert, oder anderweitig ausgebildet, an andere Schlitten 400 (z. B. Rechenschlitten 800, Beschleunigerschlitten 1000 etc.) Zugriff auf einen Pool von Speicher (z. B. in zwei oder mehr Sätzen 1430, 1432 von Speichervorrichtungen 720) lokal zu dem Speicherschlitten 1200 bereitzustellen. Zum Beispiel kann ein Rechenschlitten 800 oder ein Beschleunigerschlitten 1000 während des Betriebs aus der Ferne auf einen oder mehrere der Speichersätze 1430, 1432 des Speicherschlittens 1200 schreiben und/oder von denselben lesen, unter Verwendung eines logischen Adressraums, der auf physische Adressen in den Speichersätzen 1430, 1432 abbildet. Der Speicherschlitten 1400 umfasst verschiedene Komponenten, die ähnlich zu Komponenten des Schlittens 400 und/oder des Rechenschlittens 800 sind, die in 14 unter Verwendung derselben Bezugszeichen identifiziert wurden. Die Beschreibung solcher Komponenten, die vorangehend in Bezug auf 6, 7 und 8 bereitgestellt wurde, ist anwendbar auf die entsprechenden Komponenten des Speicherschlittens 1400 und wird hierin der Klarheit der Beschreibung des Speicherschlittens 1400 halber nicht wiederholt.
  • Bei dem beispielhaften Speicherschlitten 1400 sind die physischen Ressourcen 620 als Speichersteuerungen 1420 ausgeführt. Obgleich nur zwei Speichersteuerungen 1420 in 14 gezeigt sind, wird darauf hingewiesen, dass der Speicherschlitten 1400 bei anderen Ausführungsbeispielen zusätzliche Speichersteuerungen 1420 umfassen kann. Die Speichersteuerungen 1420 können als irgendeine Art von Prozessor, Steuerung oder Steuerschaltung ausgeführt sein, die in der Lage ist, das Schreiben und Lesen von Daten in die Speichersätze 1430, 1432 basierend auf Anforderungen, die via die Kommunikationsschaltung 830 empfangen werden, zu steuern. Bei dem Ausführungsbeispiel ist jede Speichersteuerung 1420 mit einem entsprechenden Speichersatz 1430, 1432 verbunden, um auf die Speichervorrichtungen 720 innerhalb des entsprechenden Speichersatzes 1430, 1432 zu schreiben und von ihnen zu lesen, und irgendwelche Berechtigungen (z. B. Lesen, Schreiben etc.) durchzusetzen, die dem Schlitten 400 zugeordnet sind, der eine Anforderung an den Speicherschlitten 1400 gesendet hat, um eine Speicherzugriffsoperation (z. B. Lesen oder Schreiben) auszuführen.
  • Bei einigen Ausführungsbeispielen kann der Speicherschlitten 1400 auch eine Steuerung-zu-Steuerung-Verbindung 1442 umfassen. Ähnlich zu der Ressource-zu-Ressource-Verbindung 624 des vorangehend erörterten Schlittens 400, kann die Steuerung-zu-Steuerung-Verbindung 1442 als irgendeine Art von Kommunikationsverbindung ausgeführt sein, die in der Lage ist, Steuerung-zu-Steuerung-Kommunikationen zu ermöglichen. Bei dem Ausführungsbeispiel ist die Steuerung-zu-Steuerung-Verbindung 1442 als eine Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung (z. B. schneller als das I/O-Teilsystem 622) ausgeführt. Zum Beispiel kann die Steuerung-zu-Steuerung-Verbindung 1442 als eine QuickPath Interconnect (QPI), eine UltraPath Interconnect (UPI) oder eine andere Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung ausgeführt sein, die für Prozessor-zu-Prozessor-Kommunikationen dediziert ist. Somit kann bei einigen Ausführungsbeispielen eine Speichersteuerung 1420 durch die Steuerung-zu-Steuerung-Verbindung 1442 auf Speicher zugreifen, der innerhalb des Speichersatzes 1432 ist, der einer anderen Speichersteuerung 1420 zugeordnet ist. Bei einigen Ausführungsbeispielen ist eine skalierbare Speichersteuerung aus mehreren kleineren Speichersteuerungen, hierin als „Chiplets“ bezeichnet, auf einem Speicherschlitten (z. B. dem Speicherschlitten 1400) hergestellt. Die Chiplets können verbunden sein (z. B. unter Verwendung einer EMIB (Embedded Multi-Die Interconnect Bridge; eingebettete Multi-Die-Verbindungsbrücke)). Die kombinierte Chiplet-Speichersteuerung kann auf eine relativ große Anzahl von Speichersteuerungen und I/O-Ports (z. B. bis zu 16 Speicherkanäle) skaliert werden. Bei einigen Ausführungsbeispielen können die Speichersteuerungen 1420 eine Speicherverschachtelung implementieren (z. B. eine Speicheradresse ist auf den Speichersatz 1430 abgebildet, die nächste Speicheradresse ist auf den Speichersatz 1432 abgebildet und die dritte Adresse ist auf den Speichersatz 1430 abgebildet, etc.). Das Verschachteln kann innerhalb der Speichersteuerungen 1420 oder von CPU-Buchsen (z. B. des Rechenschlittens 800) über Netzwerklinks zu den Speichersätzen 1430, 1432 verwaltet werden und kann die Latenz, die einem Ausführen von Speicherzugriffsoperationen im Vergleich zum Zugriff auf angrenzende Speicheradressen von derselben Speichervorrichtung zugeordnet ist, verbessern.
  • Ferner kann bei einigen Ausführungsbeispielen der Speicherschlitten 1400 mit einem oder mehreren anderen Schlitten 400 (z. B. in dem gleichen Rack 240 oder einem benachbarten Rack 240) durch einen Wellenleiter verbunden sein, unter Verwendung des Wellenleiterverbinders 1480. Bei dem Ausführungsbeispiel sind die Wellenleiter 64-Millimeter-Wellenleiter, die 16 Rx-(d. h. Empfangs-) Spuren und 16 Tx- (d. h. Sende-) Spuren bereitstellen. Jede Spur bei dem Ausführungsbeispiel ist entweder 16 Ghz oder 32 Ghz. Bei anderen Ausführungsbeispielen können die Frequenzen unterschiedlich sein. Ein Verwenden eines Wellenleiters kann Hoher - Durchsatz-Zugriff auf den Speicherpool (z. B. die Speichersätze 1430, 1432) auf einen anderen Schlitten (z. B. einen Schlitten 400 in demselben Rack 240 oder einem benachbarten Rack 240 als der Speicherschlitten 1400) bereitstellen, ohne die Last auf den optischen Datenverbinder 834 zu erhöhen.
  • Bezug nehmend auf 15 kann ein System zum Ausführen einer oder mehrerer Arbeitslasten (z. B. Anwendungen) gemäß dem Rechenzentrum 100 implementiert sein. Bei dem Ausführungsbeispiel umfasst das System 1510 einen Orchestrator-Server 1520, der als ein verwalteter Knoten ausgeführt sein kann, aufweisend eine Rechenvorrichtung (z. B. einen Prozessor 820 auf einem Rechenschlitten 800), die Management-Software (z. B. eine Cloudarbeitende Umgebung, wie beispielsweise Open Stack) ausführt, die kommunikativ mit mehreren Schlitten 400, umfassend eine große Anzahl von Rechenschlitten 1530 (z. B. jeweils ähnlich zu dem Rechenschlitten 800), Speicherschlitten 1540 (z. B. jeweils ähnlich zu dem Speicherschlitten 1400), Beschleunigerschlitten 1550 (z. B. jeweils ähnlich zu dem Speicherschlitten 1000), und Speicherungsschlitten 1560 (z. B. jeweils ähnlich zu dem Speicherungsschlitten 1200), gekoppelt ist. Ein oder mehrere der Schlitten 1530, 1540, 1550, 1560 können in einen verwalteten Knoten 1570 gruppiert sein, wie beispielsweise durch den Orchestrator-Server 1520, um gemeinsam eine Arbeitslast (z. B. eine Anwendung 1532, die in einer virtuellen Maschine oder in einem Container ausgeführt wird) auszuführen. Der verwaltete Knoten 1570 kann als eine Anordnung von physischen Ressourcen 620, wie beispielsweise Prozessoren 820, Speicherressourcen 720, Beschleunigerschaltungen 1020 oder Datenspeicherung 1250, von dem gleichen oder unterschiedlichen Schlitten 400, ausgeführt sein. Ferner kann der verwaltete Knoten zu der Zeit, zu der dem verwalteten Knoten eine Arbeitslast zugewiesen werden soll, oder zu irgendeinem anderen Zeitpunkt durch den Orchestrator-Server 1520 eingerichtet, definiert oder „aufgesponnen“ werden und kann unabhängig davon existieren, ob dem verwalteten Knoten derzeit irgendwelche Arbeitslasten zugewiesen sind. Bei dem Ausführungsbeispiel kann der Orchestrator-Server 1520 selektiv physische Ressourcen 620 von den Schlitten 400 zuweisen und/oder die Zuweisung aufheben und/oder einen oder mehrere Schlitten 400 zu dem verwalteten Knoten 1570 als eine Funktion von Quality of Service- (QoS-) Zielen (z. B. ein Ziel-Durchsatz, eine Ziellatenz, eine Ziel-Anzahl von Anweisungen pro Sekunde etc.), die einem Service-Level-Agreement für die Arbeitslast (z.B. die Anwendung 1532) zugeordnet sind, hinzufügen oder von demselben entfernen. Dabei kann der Orchestrator-Server 1520 Telemetriedaten empfangen, die Performance-Bedingungen (z. B. Durchsatz, Latenz, Anweisungen pro Sekunde, etc.) in jedem Schlitten 400 des verwalteten Knotens 1570 anzeigen, und die Telemetriedaten mit den Quality-of-Service-Zielen vergleichen, um zu bestimmen, ob die Quality-of-Service-Ziele erfüllt werden. Der Orchestrator-Server 1520 kann zusätzlich bestimmen, ob die Zuweisung einer oder mehrerer physischer Ressourcen von dem verwalteten Knoten 1570 aufgehoben werden kann, während die QoS-Ziele noch erfüllt werden, wodurch diese physischen Ressourcen für eine Verwendung in einem anderen verwalteten Knoten (z. B. um eine unterschiedliche Arbeitslast auszuführen) freigegeben werden. Alternativ, wenn die QoS-Ziele derzeit nicht erfüllt sind, kann der Orchestrator-Server 1520 bestimmen, zusätzliche physische Ressourcen dynamisch zuzuordnen, um bei der Ausführung der Arbeitslast (z. B. der Anwendung 1532) zu helfen, während die Arbeitslast ausgeführt wird. In ähnlicher Weise kann der Orchestrator-Server 1520 bestimmen, die Zuweisung physischer Ressourcen von einem verwalteten Knoten dynamisch aufzuheben, wenn der Orchestrator-Server 1520 bestimmt, dass ein Aufheben der Zuweisung der physischen Ressource dazu führen würde, dass die QoS-Ziele immer noch erreicht werden.
  • Zusätzlich kann der Orchestrator-Server 1520 bei einigen Ausführungsbeispielen Trends in der Ressourcennutzung der Arbeitslast (z. B. der Anwendung 1532) identifizieren, wie beispielsweise durch ein Identifizieren von Ausführungsphasen (z. B. Zeitperioden, in denen unterschiedliche Operationen, wobei jede unterschiedliche Ressourcennutzungscharakteristika aufweist, ausgeführt werden) der Arbeitslast (z. B. der Anwendung 1532) und durch vorausschauendes Identifizieren verfügbarer Ressourcen in dem Rechenzentrum 100 und ein Zuweisen derselben zu dem verwalteten Knoten 1570 (z. B. innerhalb einer vordefinierten Zeitperiode des zugeordneten Phasenbeginns). Bei einigen Ausführungsbeispielen kann der Orchestrator-Server 1520 Performance basierend auf verschiedenen Latenzen und einem Verteilungsschema modellieren, um Arbeitslasten unter Rechenschlitten und anderen Ressourcen (z. B. Beschleunigerschlitten, Speicherschlitten, Speicherungsschlitten) in dem Rechenzentrum 100 zu verteilen. Der Orchestrator-Server 1520 kann beispielsweise ein Modell verwenden, das die Performance von Ressourcen auf den Schlitten 400 (z. B. FPGA-Performance, Speicherzugrifflatenz etc.) und die Performance (z. B. Überlastung, Latenz, Bandbreite) des Pfads durch das Netzwerk zu der Ressource (z. B. FPGA) berücksichtigt. Somit kann der Orchestrator-Server 1520 bestimmen, welche Ressource(n) mit welchen Arbeitslasten verwendet werden sollten, basierend auf der Gesamtlatenz, die jeder potenziellen Ressource, die in dem Rechenzentrum 100 (z. B. die Latenz, die der Performance der Ressource selbst zugeordnet ist, zusätzlich zu der Latenz, die dem Pfad durch das Netzwerk zwischen dem Rechenschlitten, der die Arbeitslast ausführt, und dem Schlitten 400, auf dem die Ressource positioniert ist, zugeordnet ist) verfügbar ist, zugeordnet ist.
  • Bei einigen Ausführungsbeispielen kann der Orchestrator-Server 1520 eine Abbildung von Wärmeerzeugung in dem Rechenzentrum 100 erzeugen, unter Verwendung von Telemetriedaten (z. B. Temperaturen, Lüftergeschwindigkeiten etc.), die von den Schlitten 400 gemeldet werden, und verwalteten Knoten Ressourcen als Funktion der Abbildung von Wärmeerzeugung und vorhergesagter Wärmeerzeugung, die unterschiedlichen Arbeitslasten zugeordnet ist, zuweisen, um eine Zieltemperatur und Wärmeverteilung in dem Rechenzentrum 100 aufrechtzuerhalten. Zusätzlich oder alternativ dazu kann der Orchestrator-Server 1520 bei einigen Ausführungsbeispielen empfangene Telemetriedaten in einem hierarchischen Modell organisieren, das eine Beziehung zwischen den verwalteten Knoten (z. B. eine räumliche Beziehung wie beispielsweise die physischen Standorte der Ressourcen der verwalteten Knoten innerhalb des Rechenzentrums 100 und/oder eine funktionale Beziehung wie beispielsweise Gruppierungen der verwalteten Knoten durch die Kunden, für die die verwalteten Knoten Dienste bereitstellen, die Arten von Funktionen, die typischerweise von den verwalteten Knoten ausgeführt werden, verwaltete Knoten, die typischerweise Arbeitslasten untereinander gemeinschaftlich verwenden oder austauschen, etc.) anzeigt. Basierend auf Unterschieden bei den physischen Standorten und Ressourcen in den verwalteten Knoten kann eine gegebene Arbeitslast unterschiedliche Ressourcennutzungen (z. B. Verursachen einer unterschiedlichen, internen Temperatur, Verwenden eines unterschiedlichen Prozentsatzes von Prozessor- oder Speicherkapazität) über die Ressourcen von unterschiedlichen verwalteten Knoten hinweg aufzeigen. Der Orchestrator-Server 1520 kann die Unterschiede basierend auf den Telemetriedaten bestimmen, die in dem hierarchischen Modell gespeichert sind, und die Unterschiede in eine Vorhersage einer zukünftigen Ressourcennutzung einer Arbeitslast einfließen lassen, falls die Arbeitslast von einem verwalteten Knoten einem anderen verwalteten Knoten neu zugewiesen wird, um die Ressourcennutzung in dem Rechenzentrum 100 genau auszubalancieren. Bei einigen Ausführungsbeispielen kann der Orchestrator-Server 1520 Muster in den Ressourcennutzungsphasen der Arbeitslasten identifizieren und die Muster zur Vorhersage der zukünftigen Ressourcennutzung der Arbeitslasten verwenden.
  • Um die Rechenlast auf dem Orchestrator-Server 1520 und die Datenübermittlungslast auf dem Netzwerk zu reduzieren, kann der Orchestrator-Server 1520 bei einigen Ausführungsbeispielen Selbsttestinformationen an die Schlitten 400 senden, um es jedem Schlitten 400 zu ermöglichen, lokal (z. B. auf dem Schlitten 400) zu bestimmen, ob Telemetriedaten, die durch den Schlitten 400 erzeugt wurden, eine oder mehrere Bedingungen (z. B. eine verfügbare Kapazität, die eine vorbestimmte Schwelle erfüllt, eine Temperatur, die eine vorbestimmte Schwelle erfüllt, etc.) erfüllen. Jeder Schlitten 400 kann dann ein vereinfachtes Ergebnis (z. B. Ja oder Nein) an den Orchestrator-Server 1520 zurückmelden, was der Orchestrator-Server 1520 bei dem Bestimmen der Zuordnung von Ressourcen zu verwalteten Knoten nutzen kann.
  • Unter Verwendung einer Vorrichtungsschnittstelle zugängliche Konfigurationsschaltungsanordnung
  • Bei Ethernet-Datenübertragungsraten von 10 Gb/Sekunde und mehr kann die Verarbeitung von Paketen, die von einer Netzwerkschnittstelle empfangen werden, zu einem Engpass werden. In Rechenzentrumsnetzwerken, die Performancebeschleunigungstechniken, Virtualisierung und Overlay-Netzwerke unterstützen, kann die zeitgerechte Paketverarbeitung zu einer Herausforderung werden. Einige Ansätze lagern einen Teil der Paketverarbeitung an die Netzwerkschnittstellensteuerung (NIC) aus. Eine NIC kann eine Netzwerkschnittstellenkarte umfassen oder Teil einer selben sein. Bei einigen Beispielen kann eine NIC als Teil eines Systems eines Chips implementiert werden.
  • Software-definiertes Netzwerken (SDN; software-defined networking) kann zur Modifizierung und Verwaltung von Netzwerken angewandt werden. Bei einigen Beispielen kann eine NIC unter Verwendung des SDN neu konfiguriert werden, um neue Funktionen oder Protokolle zu unterstützen. Beispielsweise können SmartNICs Merkmale einer NIC sowie andere Paketverarbeitungsmerkmale wie beispielsweise eine Firewall für die Sicherheit, einen Layer-2- oder Layer-3-Switch für die Verkehrssteuerung, Performancebeschleunigungstechniken, Netzwerktransparenz mit Fernverwaltung und Speicherungsdienste für einen Compute-Host umfassen. Eine SmartNIC kann eine oder mehrere lokale Funktionen als Teil einer Service-Function-Chaining (SFC) ausführen, um empfangene Pakete oder Pakete vor der Übertragung oder Beendigung an einem Endpunkt zu verarbeiten.
  • Einige SmartNICs unterstützen Bare-Metal-Hosting-Fähigkeiten, indem sie die Auslagerung (offload) von Speicherungsdiensten und Netzwerkdiensten unterstützen. Ein Bare-Metal-Server kann einen physischen Server umfassen, der für einen einzelnen Anwender (tenant) dediziert ist. Der Anwender des Servers kann den Server entsprechend seinen Anforderungen an Performance, Sicherheit und Zuverlässigkeit optimieren. Eine Alternative zu einem Bare-Metal-Server kann einen Hypervisor-Server umfassen, bei dem sich mehrere Nutzer die Rechen-, Speicherungs- und anderen Ressourcen eines virtuellen Servers gemeinschaftlich verwenden.
  • Die Konfiguration einer SmartNIC kann das Freilegen eines Memory Base Address Register (BAR) für Memory Mapped IO- (MMIO-) Registerraum für Software oder Firmware umfassen, die auf einem System-auf-einem-Chip (SoC) in der NIC läuft, um die internen Register zu programmieren. Eine BAR-basierte Speicherschnittstelle kann zur Konfiguration von Firmware verwendet werden, die auf einem Advanced RISC Machine- (ARM-) basierten System-auf-Chip (SoC) bei einigen Vorrichtungen, wie z. B. einem Solid-State-Laufwerk (SSD), läuft. MMIO ermöglicht die Interaktion mit Hardware-Vorrichtungen durch Lesen von und Schreiben auf vordefinierte Speicheradressen. Ein solcher Entwurf stellt jedoch sehr begrenzte Möglichkeiten für Software bereit, so dass es potenziell schwierig ist, Userspace-Softwareentwurf basierend auf Storage Performance Development Kit- (SPDK-; Speicherungsperformance-Entwicklungskit-) oder Data Plane Development Kit- (DPDK-; Datenebenen-Entwicklungskit-) Rahmenwerken zu ermöglichen. Wenn die Konfigurationsschnittstelle einer anderen Systemarchitektur ausgesetzt ist, wie z. B. einem auf der Intel®-Architektur (IA) basierenden Host-System, wobei der Zugriff auf die SmartNIC eine Schnittstelle wie z. B. eine Peripheral Component Interconnect Express (PCIe) verwendet, kann die Softwarewiederverwendung auf einem Host-System, das ein auf PCIe-Vorrichtungsmodellen basierendes Linux-Betriebssystem (OS; operating system) ausführt, eine Herausforderung darstellen.
  • Non-Uniform Memory Access (NUMA) stellt den Einsatz von Speichervorrichtungen bereit, wobei die Speicherzugriffszeit teilweise von dem Speicherort relativ zu dem Prozessor abhängt, derart, dass eine Vorrichtung schneller auf den lokalen Speicher zugreifen kann als auf den Speicher einer anderen Vorrichtung. NVMe stellt NCTMA bereit, wobei die NVMe-Host-Software Warteschlangen erstellen kann und NVMe Physical Region Pages (PRPs) oder auf Streuung/Sammeln von Eingabe-/Ausgabe-Befehlen (IOs) basierende Befehle unterstützt, um den CPU-Overhead bei Datenübertragungen zu reduzieren. NVMe-kompatible Speicherungsvorrichtungen können NVMe-Befehle außer Betrieb verarbeiten, um Datenzugriffslatenzen zu reduzieren. NVMe-Befehle und Datennutzlast können unter Verwendung von NVMe over Fabrics (NVMe-oF) an Vorrichtungen übertragen werden.
  • Bei verschiedenen Ausführungsbeispielen kann eine SmartNIC Daten-Lesevorgänge oder - Schreibvorgänge unter Verwendung von Fernspeicherzugriffssemantik (z. B. NVMe-oF) unterstützen. Der SmartNIC-Entwurf kann eine Konfigurationsschnittstelle für die Verwaltung der Vorrichtungsressourcen und Konfigurationen einer NVMe-oF-Auslagerungsvorrichtung bereitstellen. Zum Beispiel wird NVMe-oF zumindest in NVM Express, Inc., „NVM Express Over Fabrics“, Revision 1.0, 5. Juni 2016, und darin referenzierten Spezifikationen sowie Variationen und Revisionen derselben, beschrieben. Eine Speichervorrichtung oder ein Pool kann von einem Server oder Host-System entfernt sein und unter Verwendung eines Netzwerks oder einer Struktur (fabric) mit dem Server oder Host-System verbunden sein, wobei hier Beispiele für Netzwerke und Strukturen beschrieben werden.
  • Wenn verschiedene NVMe-oF-Fähigkeiten an eine NIC ausgelagert werden, stellen verschiedene Ausführungsbeispiele eine Speicherungskonfigurationsschnittstellenschaltungsanordnung bereit, auf die über eine Vorrichtungsschnittstelle (z. B. PCIe-Schnittstelle) zugegriffen werden kann, um das Management von NVMe-oF-Operationen durch Software zu ermöglichen, um eine Unterstützung herstellerspezifischer Auslagerungsfähigkeiten oder die Steuerung von NVMe-oF-Funktionen als PCIe-Vorrichtung im Userspace (z. B. unter Verwendung von VFIO) zu ermöglichen.
  • Verschiedene Ausführungsformen stellen eine Speicherungskonfigurationsschnittstelle (z. B. NVMe Configuration PF (NVMe CPF)) für zumindest NVMe- oder NVMe-oF-Zugriffsoperationen bereit, die von einer SmartNIC ausgeführt werden. Die Speicherungskonfigurationsschnittstelle kann von einer Prozessorkomponente (z. B. System-auf-Chip (SoC)) einer SmartNIC oder von einem Bare-Metal-Host zur Konfiguration und Verwaltung von NVMe-Schnittstellen (z. B. NVMe PF oder NVMe VFs) verwendet werden, um es einem Host-Betriebssystem (OS) oder virtuellen Maschinen (VMs) zu ermöglichen, auf eine entfernte disaggregierte Speicherung zuzugreifen. Verschiedene Ausführungsbeispiele erlauben jedoch auch die Verwendung der Speicherungskonfigurationsschnittstelle durch VMs für unterschiedliche Anwender.
  • Verschiedene Ausführungsbeispiele stellen zumindest eine Speicherungskonfigurationsschnittstelle (z. B. ein NVMe PF mit oder ohne SR-IOV-Unterstützung) in einer SmartNIC an einen Host-Server oder eine Computerplattform bereit. Die NVMe-Schnittstelle (z. B. die Konfigurationsschnittstelle) kann einem Host-Server ausgesetzt werden und kann als virtuelle NVMe-Steuerung für Entfernte-Speicherungs-Namensräume von einem Speicherungscluster in einem Rechenzentrum dienen. Die virtuelle NVMe-Steuerung kann für eine NVMe-of-Auslagerung konfiguriert sein, umfassend, aber nicht beschränkt auf, ein Anbringen eines Namensraums, der NVMe-of-Auslagerungstabellen konfiguriert usw. Bei einigen Ausführungsbeispielen kann Storage Management and Control Plane- (Speicherungsmanagement- und Steuerungsebenen-) Software, die auf einem integrierten System-auf-einem-Chip (SoC) oder einer Prozessorkomponente innerhalb einer SmartNIC läuft oder mit einer SmartNIC gekoppelt ist, eine Speicherungskonfigurationsschnittstelle verwenden, um die virtuelle NVMe-Steuerung zu konfigurieren und NVMe-oF-Auslagerungs-bezogene Tabellen zu programmieren.
  • Verschiedene Ausführungsbeispiele der Speicherungskonfigurationsschnittstelle können via eine PCIe-Vorrichtungsschnittstelle oder eine andere hier beschriebene Vorrichtungsschnittstelle zugänglich sein. Ein Userspace-Treiber, der das Linux Virtual Function I/O- (VFIO-) Framework nutzt, kann verwendet werden, um die PCIe-Vorrichtung (z. B. die Speicherungskonfigurationsschnittstelle) für den Zugriff durch eine Userspace-Anwendung zu durchlaufen. Verschiedene Ausführungsbeispiele der Speicherungskonfigurationsschnittstelle schieben oder kopieren Befehle oder Metadaten (z. B. Deskriptoren) in einen Schattenspeicher, um es von der Prozessorkomponente ausgeführter Software zu ermöglichen, die Befehle zu verarbeiten und um Lastausgleichfähigkeit zwischen den Mailbox- (Postfach) Warteschlangen bereitzustellen, die den Kernen oder Prozessoren in dem SoC oder der Prozessorkomponente zugeordnet sind.
  • Ein Betriebssystem (OS) kann Speicher oder virtuellen Speicher in Kernelspace und Userspace trennen, um Speicherschutz und Hardwareschutz vor bösartigem oder fehlerhaftem Softwareverhalten bereitzustellen. Userspace kann Speicher sein, der laufenden Anwendungen und einigen Treibern zugeordnet ist. Prozesse, die im Rahmen des Userspaces laufen, haben möglicherweise Zugriff auf einen begrenzten Teil des Speichers, während der Kernel Zugriff auf den gesamten Speicher haben kann. Kernelspace kann ein Speicher sein, der dem Kernel, Kernel-Erweiterungen, einigen Vorrichtungstreibern und dem Betriebssystem zugeordnet ist. Ein Kernel kann Anwendungen managen, die in dem Userspace laufen. Kernelspace kann ein Ort sein, an dem der Code des Kernels gespeichert ist und darin ausgeführt wird.
  • Verschiedene Ausführungsbeispiele stellen eine PCIe-Vorrichtung bereit, die der Prozessorkomponente ausgesetzt ist (z. B. ein SoC, das in eine Netzwerkschnittstelle oder SmartNIC integriert ist). Die PCIe-Vorrichtung kann einem Host-Rechensystem erneut zuweisbar sein, wenn die Prozessorkomponente inaktiv oder entfernt wird, sodass das Host-Rechensystem die SmartNIC konfigurieren oder mit der SmartNIC kommunizieren kann, um Antworten auf NVMe-oF-kompatible speicherungsbezogene Befehle zu initiieren oder zu empfangen.
  • 16 zeigt ein Beispiel für ein System, das die Erzeugung von NVMe-oF-Transaktionen an eine SmartNIC auslagert. Host 1600 kann als Server, Server-Rack, Rechenplattform oder andere Vorrichtungen implementiert werden. Bei einigen Beispielen kann der Host 1600 eine oder mehrere umfassen von: einem Kern, einer Grafikverarbeitungseinheit (GPU), einem feldprogrammierbaren Gate-Array (FPGA; field programmable gate array) oder einer anwendungsspezifischen integrierten Schaltung (ASIC; application specific integrated circuit). Bei einigen Beispielen kann ein Kern unter anderem von Intel®, ARM®, AMD®, Qualcomm®, IBM®, Texas Instruments® verkauft oder entwickelt werden. Kerne können ein Betriebssystem, einen Treiber, Anwendungen und/oder eine virtuelle Maschine (VM) 1602 ausführen. Bei einigen Beispielen kann ein Betriebssystem (OS) Linux®, Windows®, FreeBSD®, Android®, MacOS®, iOS® oder irgendein anderes Betriebssystem sein. Der Host 1600 kann einen Speicher umfassen, z. B. einen oder mehrere von einem flüchtigen Speicher (z. B. Cache oder DRAM), nichtflüchtigen Speicher oder dauerhaften Speicher.
  • Bei einigen Beispielen kann eine Anwendung, die in einer virtuellen Maschine (VM) 1602 ausgeführt wird, eine Anwendungsprogramm-Schnittstelle (API; application program interface) nutzen, um mit einem Cloud-Dienstanbieter (CSP; cloud service provider) über eine Laufwerksart zu verhandeln, die für die Datenspeicherung und den Datenzugriff zur Verfügung steht. Ein CSP kann zumindest einen oder mehrere Namensräume an das für die Anwendung oder VM verfügbare Laufwerk anhängen. Es wird darauf hingewiesen, dass virtuelle Maschinen auch auf Container oder irgendeine andere Software verweisen können, die eine Rechenplattform gemeinschaftlich verwenden. Irgendein Prozessor kann eine gemeinschaftlich verwendete Ressourcenumgebung wie beispielsweise eine virtuelle Maschine oder einen Container ausführen. Eine virtuelle Maschine kann Software sein, die ein Betriebssystem und eine oder mehrere Anwendungen ausführt. Eine virtuelle Maschine kann durch Spezifikation, Konfigurationsdateien, virtuelle Plattendatei, nichtflüchtige Direktzugriffsspeicher- (NVRAM; non-volatile random access memory) Einstellungsdatei und die Protokolldatei definiert werden und wird durch die physischen Ressourcen einer Host-Rechenplattform gesichert. Ein Container kann ein Software-Package von Anwendungen, Konfigurationen und Abhängigkeiten sein, sodass die Anwendungen zuverlässig auf einer Rechenumgebung im Hinblick auf eine andere laufen. Containers können ein Betriebssystem, das auf der Serverplattform installiert ist, gemeinschaftlich verwenden und als isolierte Prozesse laufen.
  • Die virtuelle Maschine (VM) 1602 kann unter Verwendung des NVMe-Treibers 1604 den Zugriff auf eine lokale Speicherungsvorrichtung oder eine entfernte Speicherungsvorrichtung anfordern. Andere Treiber können ausgeführt werden, wie z. B. ein Treiber für SmartNIC 1650 oder andere Vorrichtungen. Einige Beispiele von SmartNIC 1650 können eine Speicherungsschnittstelle bereitstellen, wobei ein Anwender (z. B. VM 1602) gemäß NVMe-oF über SmartNIC 1650 auf verfügbare Speicherung über ein Netzwerk oder eine Struktur zugreifen kann. Verschiedene Ausführungsbeispiele ermöglichen die Konfiguration einer virtuellen Funktion (VF), bei der adressierbare Speicherregionen der entfernten Speicherungsvorrichtung (storage) unter Verwendung zumindest eines Namensraums für ein VF- und RDMA-Warteschlangen-Paar identifiziert werden.
  • Die SmartNIC 1650 kann die Prozessorkomponente 1660 und das NIC-Teilsystem 1670 umfassen. Die Prozessorkomponente 1660 und das NIC-Teilsystem 1670 können physisch in derselben SmartNIC positioniert und unter Verwendung einer Hauptplatine und einer Schnittstelle oder eines Busses verbunden oder innerhalb eines selben Systems-auf-Chip (SoC) gebildet werden. Die Prozessorkomponente 1660 kann Prozessorkomponenten und Speichervorrichtungen umfassen, für die hier Beispiele bereitgestellt werden. Bei einigen Beispielen kann die SmartNIC 1650 NVMe-oF-Transaktionen erzeugen und übertragen, wobei sie einen ersten Pfad mit NIC 1670 verwendet, der zumindest teilweise hardwarebasiert ausgelagert ist, um NVMe-Befehle über RDMA zu erzeugen und zu übertragen, oder sie einen zweiten Pfad mit der Prozessorkomponente 1660 verwendet, um NVMe-Befehle über irgendeine konfigurierte Transportschicht zu erzeugen und zu übertragen. NVMe-oF-Befehle können über verschiedene Transportschichten wie beispielsweise FibreChannel, InfiniBand, RoCE, RoCEv2, iWARP, Transmission Control Protocol (TCP) usw. gesendet werden. Die Transportschichten können sich erweitern, um das User Data Protocol (UDP), schnelle UDP-Internetverbindungen (QUIC) usw. zu nutzen. Bei einigen Beispielen kann die NIC 1670 und/oder die Prozessorkomponente 1660 Speicherungszugriffsbefehle erzeugen, die über die Internet Small Computer Systems Interface (iSCSI; iSCSI; Internet-Kleincomputer-Systemschnittstelle) oder ein proprietäres Protokoll gesendet werden können. NVMe-oF ermöglicht die Übertragung von NVMe-Befehlen an eine entfernte Vorrichtung unter Verwendung eines Netzwerks oder einer Struktur. Die Verwendung von NVMe-oF über RDMA kann irgendeine der RDMA-Technologien nutzen, umfassend InfiniBand, RoCE und iWARP und andere. Es wird darauf hingewiesen, dass der erste Pfad (z. B. NIC 1670) konfiguriert werden kann, NVMe-oF unter Verwendung irgendeiner Art von Transportschicht oder Semantik zu erzeugen.
  • RDMA kann direkte Schreibvorgänge oder Lesevorgänge umfassen, um den Inhalt von Puffern über eine Verbindung hinweg zu kopieren, ohne dass das Betriebssystem die Kopien verwaltet. Eine Netzwerkschnittstellenkarte oder eine andere Schnittstelle zu einer Verbindung kann eine Direkter-Speicherzugriffs-Engine implementieren und einen Kanal von ihrer RDMA-Engine über einen Bus zu Anwendungsspeicher erstellen. Eine Sende-Warteschlange und Empfangs-Warteschlange kann zur Übertragung von Arbeitsanforderungen verwendet werden und wird als Warteschlangen-Paar (QP) bezeichnet. Ein Anfragender kann Arbeitsanforderungsanweisungen in seine Arbeitswarteschlangen stellen, die den Schnittstelleninhalt in Kenntnis setzen, an welche Puffer Inhalte gesendet oder von welchen Puffern Inhalte empfangen werden sollen. Eine Arbeitsanforderung kann einen Identifizierer (z. B. Zeiger oder Speicheradresse eines Puffers) umfassen. Beispielsweise kann eine Arbeitsanforderung, die in eine Sende-Warteschlange (SQ; send queue) gestellt wird, einen Identifizierer einer Nachricht oder eines Inhalts in einem zu sendenden Puffer (z. B. App-Puffer) umfassen. Im Gegensatz dazu kann ein Identifizierer in einer Arbeitsanforderung in einer Empfangs-Warteschlange (RQ; Receive Queue) einen Zeiger auf einen Puffer (z. B. App-Puffer) umfassen, wobei der Inhalt einer eingehenden Nachricht gespeichert werden kann. Eine RQ kann verwendet werden, um einen RDMA-basierten Befehl oder eine RDMA-basierte Antwort zu empfangen. Eine Fertigstellungs-Warteschlange (Completion Queue, CQ) kann verwendet werden, um zu benachrichtigen, wenn die auf die Arbeitswarteschlangen gestellten Anweisungen fertiggestellt wurden.
  • Bei einigen Beispielen kann die NIC 1670 NVMe-Befehle über RDMA unter Verwendung der NVMe-Protokollschnittstelle (NPI; NVMe Protocol Initiator) 1672, NVMe/RDMA Offload 1674, RDMA-Schicht 1676 und einer Verarbeitungspipeline 1678 erzeugen und übertragen. Für Namensräume, die NPI 1672 zugewiesen sind, kann NPI 1672 NVMe-Befehle in NVMe-oF-Befehle übersetzen und die Prozessorkomponente 1660 umgehen. Für Namensräume, die der Prozessorkomponente 1660 zugewiesen sind, kann die Speicherungskonfigurationsschnittstelle 1690 Befehle und Metadaten mit Identifizierern der Befehle in den Speicher 1680 kopieren, und die Prozessorkomponente 1660 kann auf die Metadaten zugreifen, um Befehle in dem Speicher 1680 zu identifizieren, um NVMe-Befehle in NVMe-oF-Befehle zu übersetzen und die entsprechende Verarbeitung und Header-Generierung auszuführen.
  • Verschiedene Ausführungsbeispiele können den NVMe over TCP-Fluss unterstützen, wobei Befehle an die Prozessorkomponente 1660 zur Verarbeitung weitergeleitet werden (z. B. unter Verwendung von Software und/oder Hardware) und dann die NVMe-oF-Befehle unter Verwendung des TCP/IP-Netzwerkstacks, der auf der Prozessorkomponente 1660 läuft, gesendet werden. Für NVMe-over-TCP-Flüsse können NVMe-Befehle vom Host 1600 zu der Prozessorkomponente 1660 geroutet werden, so dass Software, die auf der Prozessorkomponente 1660 ausgeführt wird, eine Verarbeitung ausführen und einen Netzwerkstack ausführen kann, um NVMe-over-TCP-Befehle an ein entferntes Zielsystem vorzubereiten. Dies kann ein rechenintensiver Verarbeitungsfluss sein, bei dem mehrere CPUs/Kerne verwendet werden können, um eine hohe Input/Output Operations Per Second- (IOPS-) Lösung zu liefern.
  • Bei einigen Beispielen kann die Prozessorkomponente 1660 NVMe-Befehle über eine konfigurierte Transportschicht erzeugen und übertragen, indem NVMe over Transport Layer-Initiator 1662, der RDMA-Treiber 1664 und der Treiber für das lokale Netzwerk (LAN) 1666 verwendet werden. Bei einigen Beispielen kann die Prozessorkomponente 1660 bestimmte Paketverarbeitungsoperationen ausführen (z. B. Kryptographie, Kompression oder zyklische Redundanzprüfung (CRC; cyclic redundancy check)). Der RDMA-Treiber 1664 und LAN-Treiber 1666 können einen Netzwerkprotokoll-Stapel bereitstellen, um Pakete für die Übertragung durch SmartNIC 1650 an eine Zieladresse zu bilden, die einem NVMe-Ziellaufwerk zugeordnet ist. Eine Lokales-Netzwerk- (LAN-) Advanced-Policy-Firewall (APF) 1692 kann Netzwerkadressübersetzung (NAT; network address translation), Ausgangsfilterung oder Feldmodifikation bereitstellen.
  • Bei einigen Beispielen kann die NIC 1670 unter Verwendung einer Speicherungskonfigurationsschnittstelle (Config IF) 1690 konfiguriert werden, indem der Konfigurationstreiber 1668 auf der Prozessorkomponente 1660 ausgeführt wird. Bei einigen Beispielen kann der Konfigurationstreiber 1668 auf dem Host 1600 anstelle der Prozessorkomponente 1660 ausgeführt werden. Beispielsweise kann der Konfigurationstreiber 1668 in dem Userspace ausgeführt werden (z. B. auf einem SPDK- oder DPDK-Rahmen). Beispielsweise kann der Konfigurationstreiber 1668 die Speicherungskonfigurationsschnittstelle 1690 konfigurieren, um Namensräume an einer NVMe-Speichervorrichtung anzubringen, die einem VF oder PF zugeordnet ist. Der Konfigurationstreiber 1668 kann es NPI 1672 ermöglichen, eine NVMe-Befehlsgenerierung für bestimmte Ziel-Namensräume auszuführen oder auf die Prozessorkomponente 1660 auszulagern, um eine NVMe-Befehlsgenerierung für andere Ziel-Namensräume auszuführen. Bei einigen Beispielen wird die Speicherungskonfigurationsschnittstelle 1690 verwendet, um eine Hyper-Converged-Speicherungsnutzung zu konfigurieren und zu managen, bei der sowohl NVMe-oF-Initiator als auch NVMe-oF-Ziel verwendet werden.
  • Die Speicherungskonfigurationsschnittstelle 1690 kann einen NVMe-Namensraum an einen NVMe PF oder einen VF anbringen. Bei einigen Beispielen kann das Host-System 1600 auf einen an einem PF oder VF angebrachten NVMe-Namensraum zugreifen. Der Namensraum kann aus dem lokalen Speicher (z. B. Speicher 1680) oder lokalen SSDs, die unter Verwendung der PCIe-Schnittstelle an die SmartNIC 1650 angeschlossen sind (z. B. NVMe-SSDs von 17A) erzeugt werden, oder mit der SmartNIC 1650 unter Verwendung eines Netzwerks oder einer Struktur (z. B. unter Verwendung eines Netzwerkkabels oder via ein oder mehrere Weiterleitungselemente) entfernt verbunden werden. Beispielsweise können NVMe-Namensräume entfernten Speicherungsvorrichtungen oder Knoten zugeordnet sein, die via ein Netzwerk oder eine Struktur zugänglich sind.
  • Die Speicherungskonfigurationsschnittstelle 1690 kann als Vorrichtung implementiert werden, die unter Verwendung einer PCIe-Schnittstelle mit der SmartNIC und/oder dem Serversystem gekoppelt ist. Die Speicherungskonfigurationsschnittstelle 1690 kann gegenüber Prozessoren der Prozessorkomponente 1660 oder des Hosts 1600 als PCIe-Vorrichtung erscheinen. Auf PCIebezogene Merkmale einer Vorrichtungsschnittstelle der Speicherungskonfigurationsschnittstelle 1690 kann in Verbindung mit der Ausführung von NVMe-Befehlen zugegriffen werden. NVMe-Befehle können beispielsweise umfassen: Lesen (read), Schreiben (write), Leeren (flush) usw. Eine PCIe-Vorrichtungsschnittstelle für die Speicherungskonfigurationsschnittstelle 1690 kann zumindest die folgenden Fähigkeiten bereitstellen: (a) ein Speicher-BAR zur Konfiguration interner Register und Auslagerungs-Tabellen, (b) Message Signaled Interrupts (MSI-X) und Interrupt-Benachrichtigungen an die Prozessorkomponente 1660 für Mailbox-Warteschlangen und Vorrichtungs-Ausnahmen/Ereignisse, (c) Mailbox-Warteschlangen/Gruppen zur Weitergabe von Befehlen und Ereignissen an die Prozessorkomponente 1660, mit einer Lastausgleichs-Möglichkeit zwischen den Mailbox-Warteschlangen in einer selben Gruppe zur Skalierbarkeit, (d) Push-Befehle und Metadaten (z. B. Befehlszeiger im Speicher), die an NPI 1672 gesendet werden, auch an einen Schattenspeicher 1680 für direkten Zugriff durch die Prozessorkomponente 1660. Beispielsweise kann Software, die auf der Prozessorkomponente 1660 läuft, eine NVMe-Protokollschnittstellen-Transportschicht umfassen, die einen SPDK-, DPDK- oder OpenDataPlane-Rahmen verwendet. Die Ausführung des Konfigurationstreibers 1668 auf der Prozessorkomponente 1660 kann die Verwendung mehrerer Hosts (z. B. Server) ermöglichen, die den Konfigurationstreiber 1668 nicht ausführen, sodass bei einem Ausfall irgendeines Hosts, auf dem der Konfigurationstreiber 1668 läuft, die Konfiguration der Speicherungskonfigurationsschnittstelle 1690 nicht unterbrochen wird. Die Speicherungskonfigurationsschnittstelle 1690 kann als PCIe-Funktion der Prozessorkomponente 1660 ausgesetzt werden, und diese PCIe-Funktion kann der Host-Plattform 1600 erneut zugewiesen werden, wenn die Prozessorkomponente 1660 inaktiv ist oder entfernt wird.
  • Beispielsweise kann eine Mailbox-Warteschlange pro Kern oder Gruppe aus einem oder mehreren Kernen zugewiesen werden. Eine Mailbox-Warteschlange kann im Speicher 1680 oder einem anderen Speicher, auf den der Host 1600 oder die NIC 1670 zugreifen kann, zugewiesen werden. Eine Mailbox-Warteschlange kann verwendet werden, um Befehle von der NIC 1670 an die Prozessorkomponente 1660 weiterzugeben oder Befehle von der Prozessorkomponente 1660 an die NIC 1670 weiterzugeben. Eine Mailbox-Warteschlange kann eine Ringstruktur zur Weitergabe der Befehle oder Metadaten an den Speicher 1680 sein. Mailbox-Einträge, die in diese Mailbox-Warteschlangen geschrieben werden, können ein Phasenbit umfassen, das schaltet, wenn der Ring umbricht (wrap over), damit Software erkennen kann, ob ein Eintrag gültig ist, ohne dass es erforderlich, dass sie den entsprechenden Tail-Pointer der Mailbox liest. In einem Ziel-Auslagerung-Fall können Mailbox-Warteschlangen zur Weitergabe von Ausnahmebefehlen von der NIC 1670 an Software verwendet werden, die von der Prozessorkomponente 1660 zur unterstützten Verarbeitung ausgeführt wird.
  • Die Speicherungskonfigurationsschnittstelle 1690 kann eine Lastausgleichsfähigkeit zwischen den Mailbox-Warteschlangen bereitstellen. Der Lastausgleich kann eine Round-Robin- (Rundlauf-) Auswahl von NVMe-Befehlen zwischen den Warteschlangen umfassen. Befehle, die an einen bestimmten Namensraum gerichtet sind, können an eine bestimmte Mailbox-Warteschlange gerichtet werden. Bei einigen Beispielen können Lese-Befehle und Schreib-Befehle (oder andere Befehle) in verschiedene Mailbox-Warteschlangen getrennt werden. Für die Multi-Host- und Verschiedene-Quality-of-Service- (QoS-) Level-Unterstützung können Mailbox-Warteschlangen in verschiedene Gruppen konfiguriert werden, die verschiedenen QoS-Levels zugeordnet sind. Befehle für einen bestimmten Namensraum können an eine bestimmte Mailbox-Gruppe geroutet werden, und innerhalb einer Mailbox-Gruppe kann ein Lastausgleich zwischen den Mailbox-Warteschlangen angewendet werden, um die Zuteilung von Befehlen zwischen den Mailbox-Warteschlangen auszugleichen.
  • Der Speicher 1680 kann Befehle speichern, die von dem Host 1600 empfangen wurden oder von einem Anfragenden empfangen wurden. Ein Befehl kann zum Beispiel ungefähr 128B groß sein oder andere Größen aufweisen. Die Speicherungskonfigurationsschnittstelle 1690 kann die an die NPI 1672 bereitgestellten Befehle in den Speicher 1680 schieben, so dass Software, die auf der Prozessorkomponente 1660 ausgeführt wird, direkt auf die Befehle zugreifen kann, anstatt Registerlesungen an die NPI 1672 auszugeben.
  • Die Verwendung der Speicherungskonfigurationsschnittstelle 1690 kann die Software-Engineering-Investitionen reduzieren, da ein PCIe-basiertes Vorrichtungsmodell (oder eine andere Vorrichtungsschnittstelle) den Software-Entwurf vereinfachen und die SPDK- oder DPDKbasierte Software-Entwicklung unterstützen kann, indem VFIO verwendet wird, um die Konfiguration und den Befehl einer PCIe-Vorrichtung (oder einer anderen Vorrichtungsschnittstelle) an eine Userspace-Anwendung zu durchlaufen. Die PCIe-Vorrichtungs-Exposition kann die Software-Wiederverwendung im Userspace ermöglichen (z. B. Software, die entweder auf dem Host-Server 1600 oder der Prozessorkomponente 1660 läuft).
  • Eine Schnittstelle zwischen der Prozessorkomponente 1660 und der Speicherungskonfigurationsschnittstelle 1690 kann eine oder mehrere sein von: PCIe, ARM AXI, Intel® QuickPath Interconnect (QPI), Intel® Ultra Path Interconnect (UPI), Intel® On-Chip System Fabric (IOSF), Omnipath, Ethernet, Compute Express Link (CXL), HyperTransport, NVLink, Advanced Microcontroller Bus Architecture- (AMBA-) Verbindung, OpenCAPI, Gen-Z, CCIX, Infinity Fabric (IF) usw.
  • 17A veranschaulicht eine Systemansicht der Ziel-Auslagerungs-Nutzung, bei der eine Speicherungskonfigurationsschnittstelle verwendet wird, um einen Ziel-Auslagerungs-Hardwareblock zu konfigurieren, um eine Ziel-Auslagerung auf ein oder mehrere NVMe-kompatible Solid State-Laufwerke (SSD), die mit der SmartNIC verbunden sind, zu ermöglichen. Es wird darauf hingewiesen, dass eine SmartNIC, die für die Übertragung von NVMe-oF-Befehlen konfiguriert ist, auch in Bezug auf 17A beschriebene Fähigkeit umfassen können. Ein Ziel-Auslagerungs-Hardwareblock kann eine Prozessorkomponente 1750 umfassen, die die Ausführung von NVMe-Befehlen unterstützt, die über ein Netzwerk oder eine Struktur gesendet und an der SmartNIC 1700 empfangen werden. Bei einigen Beispielen (nicht abgebildet) können die NVMe-Befehle von einem Server, der via eine Vorrichtungsschnittstelle angeschlossen ist, empfangen werden. Bei einigen Beispielen kann die SmartNIC 1700 konfiguriert sein, um als Mikroserver zu fungieren, um die Ausführung von NVMe-Befehlen zu unterstützen.
  • Bei einigen Beispielen kann der Treiber 1752 die Speicherungskonfigurationsschnittstelle 1690 konfigurieren, um NVMe-Befehle an eine NVMe-Ziel-Auslagerung 1720 zu leiten. Der Treiber 1752 kann die NVMe-Ziel-Auslagerung 1720 konfigurieren, um NVMe-Namensräume einzustellen, die von der NVMe-Ziel-Auslagerung 1720 verarbeitet werden sollen, im Gegensatz zu NVMe-Namensräumen, die von der Prozessorkomponente 1750 verarbeitet werden sollen. Beispielsweise kann der Treiber 1752 bei einigen Beispielen im Userspace arbeiten. Der Treiber 1752 kann auf der Prozessorkomponente 1750 der SmartNIC 1700 oder einem mit der SmartNIC 1700 gekoppelten Host-Server ausgeführt werden. NVMe-Ziel-Auslagerung 1720 kann eine Hardware-, Firmware- und/oder prozessorausgeführte Softwarevorrichtung umfassen. Für bestimmte konfigurierte Namensräume, die verbundenen NVMe-SSDs zugeordnet sind, kann die NVMe-Ziel-Auslagerung 1720 als schneller Datenpfad agieren, um NVMe-oF-Ziel-Auslagerung auszuführen, um den Eingabe-/Ausgabe-Verarbeitungsfluss von empfangenen NVMe-oF-Befehlen unter Verwendung der Prozessorkomponente 1750 zu umgehen. Beispielsweise kann die NVMe-Ziel-Auslagerung 1720 einen NVMe-oF-Befehl von einem Netzwerktransport entkapseln und einen NVMe-Befehl für einen Namespace via den PCIe-Root-Port 1756 an ein Ziel-NVMe-SSD bereitstellen. Beispielsweise können empfangene NVMe-Befehle, die von der NVMe-Ziel-Auslagerung 1720 verarbeitet werden, Prozessorzyklen (z. B. CPU-Zyklen) der Prozessorkomponente 1750 sparen. Die Speicherungskonfigurationsschnittstelle 1690 kann eine Zuweisung von Mailboxen und Warteschlangen für die Verwendung durch NVMe-Ziel-Auslagerung 1720, sowie Lastausgleich, bereitstellen.
  • Die NVMe-Ziel-Auslagerung 1720 kann NVMe-Befehle in Zielwarteschlangen speichern. Beispielsweise können Ziel-Warteschlangen von der Speicherungskonfigurationsschnittstelle 1690 zugewiesen werden. Bei einigen Beispielen kann die Zielwarteschlange 1:1 auf eine NVMe-Warteschlange (z. B. Sende-Warteschlange (SQ) oder Fertigstellungs-Warteschlange (CQ)) für ein NVMe-SSD abgebildet werden. Beispielsweise können NVMe-Befehle, die auf einen gleichen Namensraum zugreifen, an eine gleiche Zielwarteschlange (NVMe-Warteschlange) geroutet werden. Beispielsweise kann für mehrere NVMe-Warteschlangen, die für den Zugriff auf einen selben Namensraum zugewiesen sind, ein Lastausgleich (z. B. Round Robin) ausgeführt werden, um die Befehle über mehrere NVMe-Warteschlangen hinweg zu verteilen.
  • Für einige konfigurierte Namensräume kann die Prozessorkomponente 1750 einen NVMe-oF-Befehl von einem Netzwerktransport entkapseln und einen NVMe-Befehl für einen Namensraum via den PCIe- RP 1756 an ein Ziel-NVMe-SSD bereitstellen. Die Prozessorkomponente 1750 kann unter Verwendung einer Schnittstelle, z. B. eines PCIe-Root-Port (RP) 1756, einer CXL-Schnittstelle oder einer mit irgendeinem Standard oder irgendeiner Spezifikation kompatiblen Schnittstelle, mit einem oder mehreren NVMe-kompatiblen SSDs kommunikativ gekoppelt sein.
  • 17B zeigt ein beispielhaftes System. Bei diesem Beispiel kann der Host 1600 einen NVMe-Befehl über einen ersten, zuvor beschriebenen Pfad zur Übertragung durch die SmartNIC 1700 an eine entfernte NVME-Speicherungsvorrichtung initiieren. Die SmartNIC 1700 kann NVMe-Befehle von einer entfernten Vorrichtung empfangen, um auf einen NVMe-Namensraum, der einem NVMe-SSD zugeordnet ist, zuzugreifen und die NVMe-Befehlsausführung über die Prozessorkomponente 1750 auszuführen. Die Prozessorkomponente 1750 kann über den PCIe-Root-Port (RP) 1756 auf ein NVMe-SSD zugreifen, um auf eine Zielspeicherungsvorrichtung zur Ausführung des NVMe-Befehls zuzugreifen.
  • 18A stellt einen Prozess für eine Netzwerkschnittstellenkarte zur Verarbeitung von Speicherungsbefehlen dar. Bei 1802 kann eine Speicherungskonfigurationsschnittstelle in einer Netzwerkschnittstelle initialisiert werden. Beispielsweise kann die Speicherungskonfigurationsschnittstelle als PCIe-Vorrichtung zugänglich sein. Bei 1804 kann ein Initiator-Konfigurationstreiber die Verwendung der Speicherungskonfigurationsschnittstelle konfigurieren. Der Initiator-Konfigurationstreiber kann ein Treiber für eine PCIe-Vorrichtung sein. Bei einigen Beispielen kann der Initiator-Konfigurationstreiber zusammen mit einer Anwendung in dem Userspace ausgeführt werden. Eine Anwendung kann eine DPDK- oder SPDK-basierte Anwendung umfassen. Der Initiator-Konfigurationstreiber kann auf einer Prozessorkomponente einer SmartNIC oder einem mit der Netzwerkschnittstellenkarte gekoppelten Host-Server ausgeführt werden. Bei 1806 kann der Initiator-Konfigurationstreiber die Speicherungskonfigurationsschnittstelle konfigurieren, um einen NVMe-Namensraum einzustellen, der einem Pfad der SmartNIC zugeordnet ist. Der Initiator-Konfigurationstreiber kann ein PCIe-Vorrichtungstreiber sein, der die Verfügbarkeit der Speicherungskonfigurationsschnittstelle als PCIe-Vorrichtung erkennt und die Speicherungskonfigurationsschnittstelle konfigurieren kann, um einen NVMe-Namensraum einzustellen, der einem ersten Pfad der SmartNIC zugeordnet ist. Der erste Pfad der SmartNIC kann eine Verarbeitungsschaltungsanordnung umfassen, um Pakete zur Übertragung von NVMe-Befehlen über eine Transportschicht zu erzeugen. Ein zweiter Pfad durch die SmartNIC kann einem anderen NVMe-Namensraum zugeordnet werden und Pakete erzeugen, um NVMe-Befehle über die gleiche oder eine andere Transportschicht zu übertragen und andere Verarbeitungen (z. B. Kryptographie) auszuführen.
  • Bei 1808 können ein oder mehrere Speicherungsbefehle an der Netzwerkschnittstellenkarte empfangen werden. Bei 1810 kann für einem ersten Transportpfad zugeordneten Befehle die Verarbeitungsschaltungsanordnung des ersten Pfades Speicherungstransaktionen zur Übertragung der NVMe-Befehle erzeugen. Bei 1812 bewirkt die Speicherungskonfigurationsschnittstelle ansprechend auf den Empfang von Speicherungsbefehlen, die von der Auslagerungs-Prozessorkomponente einer Netzwerkschnittstellenkarte zu verarbeiten sind, von Befehlen und Metadaten, den Zugriff auf die Befehle und Metadaten der Auslagerungs-Prozessorkomponente. Für Befehle, die einem Namensraum geordnet sind, der von der Auslagerungs-Prozessorkomponente verarbeitet werden soll, kann die Speicherungskonfigurationsschnittstelle beispielsweise bewirken, dass die Befehle und Metadaten (z. B. Identifizierer von verfügbaren Befehle in einer Warteschlange) in einen Speicher kopiert werden, der für die Auslagerungs-Prozessorkomponente zugänglich ist. PCIe-Mailbox-Warteschlangen können verwendet werden, um Befehle oder Metadaten an einen Speicher weiterzugeben, der für die Auslagerungs-Prozessorkomponente zugänglich ist. Die hier beschriebenen Lastausgleichstechniken können verwendet werden, um Mailbox-Warteschlangen zuzuweisen. Die Auslagerungs-Prozessorkomponente kann als System-auf-einem-Chip mit einem oder mehreren Prozessoren und Speicher implementiert werden und für eine Netzwerkschnittstelle zugänglich sein. Bei 1812 kann die Auslagerungs-Prozessorkomponente Speicherungstransaktionen erzeugen, um die NVMe-Befehle unter Verwendung einer konfigurierten Transportschicht zu übertragen und eine konfigurierte Paketverarbeitung auszuführen.
  • 18B stellt einen Prozess für eine Netzwerkschnittstellenkarte zur Verarbeitung von Speicherungsbefehlen dar. Bei 1850 kann ein Konfigurationstreiber eine Speicherungskonfigurationsschnittstelle konfigurieren, um die Verarbeitung von Speicherungsbefehlen, die von einem Netzwerk oder einer Struktur empfangen werden, auf eine Ziel-Auslagerungs-Vorrichtung auszulagern. Beispielsweise kann die Speicherungskonfigurationsschnittstelle eine Vorrichtungsschnittstelle (z. B. PCIe) umfassen und durch den Konfigurationstreiber konfiguriert werden. Die Ziel-Auslagerungs-Vorrichtung kann als System-auf-einem-Chip mit einem oder mehreren Prozessoren und Speicher implementiert sein und für eine Netzwerkschnittstellekarte zugänglich sein. Bei einigen Beispielen kann die Netzwerkschnittstellenkarte eine SmartNIC sein. Beispielsweise kann der Konfigurationstreiber einige Namensräume für die Verarbeitung durch die Ziel-Auslagerungs-Vorrichtung zuweisen und andere Namensräume für die Verarbeitung durch eine Prozessorkomponente der SmartNIC zuweisen.
  • Bei 1852 kann ein Speicherungsbefehl in einem empfangenen Paket basierend zumindest auf einem Namensraum, der einem empfangenen Speicherungsbefehl zugeordnet ist, an die Ziel-Auslagerungs-Vorrichtung oder die Prozessorkomponente gerichtet werden. Beispielsweise kann der Speicherungsbefehl einen NVMe-Befehl umfassen. Bei 1854 kann der Speicherungsbefehl verarbeitet und an ein Speicherungslaufwerk zur Ausführung gerichtet sein. Bei 1854 kann ein Speicherungsbefehl basierend zumindest auf einem Namensraum, der dem empfangenen Speicherungsbefehl zugeordnet ist, durch die Ziel-Auslagerungs-Vorrichtung oder Prozessorkomponente verarbeitet werden. Für einen entfernten Namensraum, auf den über ein Netzwerk zugegriffen wird, kann die Befehlsverarbeitung die Entkapselung eines NVMe-oF-Befehls von einem Netzwerktransport (z. B. TCP-Transport für das NVMe over TCP-Protokoll oder RDMA-Transport für das NVMe over RDMA-Protokoll) und die Bereitstellung eines NVMe-Befehls umfassen. Das Speicherungslaufwerk kann ein NVMe-kompatibles SSD sein, das kommunikativ mit der Prozessorkomponente gekoppelt ist. Das Speicherungslaufwerk kann den NVMe-Befehl ausführen.
  • 19 stellt eine Netzwerkschnittstelle dar, die Ausführungsbeispiele verwenden oder von Ausführungsbeispielen verwendet werden kann. Bei einigen Ausführungsbeispielen kann die Netzwerkschnittstelle eine Fähigkeit umfassen, NVMe-Befehle gemäß den hier beschriebenen Ausführungsbeispielen zu verarbeiten. Bei einigen Beispielen kann die Netzwerkschnittstelle 1900 als Netzwerkschnittstellensteuerung, Netzwerkschnittstellenkarte, Host Fabric Interface (HFI) oder Host Bus Adapter (HBA) implementiert werden, und solche Beispiele können austauschbar sein. Die Netzwerkschnittstelle 1900 kann unter Verwendung eines Busses, von PCIe, CXL oder DDR mit einem oder mehreren Servern gekoppelt sein. Bei einigen Ausführungsbeispielen kann die Netzwerkschnittstelle 1900 als Teil eines Systems-auf-einem-Chip (SoC), das einen oder mehrere Prozessoren umfasst, ausgeführt sein, oder auf einem Multi-Chip-Package, das auch einen oder mehrere Prozessoren umfasst, umfasst sein.
  • Die Netzwerkschnittstelle 1900 kann einen Sendeempfänger 1902, Prozessoren 1904, eine Sende-Warteschlange 1906, eine Empfangs-Warteschlange 1908, einen Speicher 1910 und eine Bus-Schnittstelle 1912 und eine DMA-Engine 1952 umfassen. Der Sendeempfänger 1902 kann fähig sein, Pakete in Übereinstimmung mit den anwendbaren Protokollen wie beispielsweise Ethernet, wie in IEEE 802.3 beschrieben, zu empfangen und zu senden, obwohl auch andere Protokolle verwendet werden können. Der Sendeempfänger 1902 kann Pakete von und zu einem Netzwerk via ein Netzwerkmedium (nicht abgebildet) empfangen und senden. Der Sendeempfänger 1902 kann eine PHY-Schaltungsanordnung 1914 und eine Media Access Control- (MAC) Schaltungsanordnung 1916 umfassen. Eine PHY-Schaltungsanordnung 1914 kann eine Codier- und Decodier-Schaltungsanordnung (nicht gezeigt) zum Codieren und Decodieren von Datenpaketen gemäß den anwendbaren Physical Layer-Spezifikationen oder -Standards umfassen. Die MAC-Schaltungsanordnung 1916 kann konfiguriert sein, um eine MAC-Adressenfilterung bei empfangenen Paketen auszuführen, MAC-Header von empfangenen Paketen durch Verifizierung der Datenintegrität zu verarbeiten, Präambeln und Auffüllungen zu entfernen und Paketinhalte zur Verarbeitung durch höhere Schichten bereitzustellen. Die MAC-Schaltungsanordnung 1916 kann konfiguriert sein, um die zu übertragenden Daten zu Paketen anzuordnen, die Ziel- und Quelladressen zusammen mit Netzwerksteuerungsinformationen und Fehlerdetektions-Hash-Werte umfassen.
  • Prozessoren 1904 können irgendeine Kombination sein aus: Prozessor, Kern, Grafikverarbeitungseinheit (GPU), feld-programmierbarem Gate-Array (FPGA), anwendungsspezifischer integrierter Schaltung (ASIC) oder einer anderen programmierbaren Hardware-Vorrichtung, die die Programmierung der Netzwerkschnittstelle 1900 erlauben. Beispielsweise kann eine „Smart Network Interface“ (Smart-Netzwerkschnittstelle) oder SmartNIC unter Verwendung von Prozessoren 1904 Paketverarbeitungsfähigkeiten in der Netzwerkschnittstelle bereitstellen. Bei einigen Beispielen können die Prozessoren 1904 als Prozessorkomponente für eine SmartNIC implementiert sein.
  • Ein Paketzuweiser 1924 kann die Verteilung empfangener Pakete zur Verarbeitung durch mehrere CPUs oder Kerne unter Verwendung der hierin beschriebenen Zeitschlitz-Zuweisung oder RSS bereitstellen. Wenn der Paketzuweiser 1924 RSS verwendet, kann der Paketzuweiser 1924 basierend auf den Inhalten eines empfangenen Pakets einen Hash berechnen oder eine andere Bestimmung vornehmen, um zu bestimmen, welche CPU oder welcher Kern ein Paket verarbeiten soll.
  • Eine Interrupt-Zusammenführung 1922 kann eine Interrupt-Moderation ausführen, wobei eine Netzwerkschnittstellen-Interrupt-Zusammenführung 1922 auf das Eintreffen mehrerer Pakete oder den Ablauf eines Time-Outs wartet, bevor sie einen Interrupt an das Host-System zur Verarbeitung (eines) empfangener(n) Pakete(s) erzeugt. Empfangssegment-Zusammenführung (RSC; Receive Segment Coalescing) kann durch eine Netzwerkschnittstelle 1900 ausgeführt werden, wobei Abschnitte eingehender Pakete zu Segmenten eines Pakets kombiniert werden. Die Netzwerkschnittstelle 1900 stellt dieses zusammengeführte Paket an eine Anwendung bereit.
  • Die Direktspeicherzugriffs- (DMA-) Engine 1952 kann einen Paketanfangsblock, eine Paketnutzlast und/oder einen Deskriptor direkt vom Host-Speicher an die Netzwerkschnittstelle oder umgekehrt kopieren, anstatt das Paket an einen Zwischenpuffer bei dem Host zu kopieren und dann eine weitere Kopieroperation von dem Zwischenpuffer an den Zielpuffer zu verwenden. Bei einigen Ausführungsbeispielen stehen mehrere DMA-Engines für die Übertragung des Inhalts von Paketen an einen Zielspeicher, der einer Host-Vorrichtung zugeordnet ist, oder an einen Zielspeicher, der einer Beschleuniger-Vorrichtung zugeordnet ist, zur Verfügung.
  • Der Speicher 1910 kann irgendeine Art von flüchtiger oder nichtflüchtiger Speichervorrichtung sein und kann irgendeine Warteschlange oder Anweisungen speichern, die zur Programmierung der Netzwerkschnittstelle 1900 verwendet werden. Die Sende-Warteschlange 1906 kann Daten oder Referenzen auf Daten zur Übertragung durch die Netzwerkschnittstelle umfassen. Die Empfangs-Warteschlange 1908 kann Daten oder Referenzen auf Daten umfassen, die durch eine Netzwerkschnittstelle von einem Netzwerk empfangen wurden. Deskriptor-Warteschlangen 1920 können Deskriptoren umfassen, die auf Daten oder Pakete in der Sende-Warteschlange 1906 oder Empfangs-Warteschlange 1908 und entsprechenden Zielspeicherregionen Bezug nehmen. Die Bus-Schnittstelle 1912 kann eine Schnittstelle mit der Host-Vorrichtung (nicht dargestellt) bereitstellen. Zum Beispiel kann die Bus-Schnittstelle 1912 mit einer PCI-, PCI-Express-, PCI-x-, Serial ATA- und/oder USB-kompatiblen Schnittstelle kompatibel sein (obwohl andere Verbindungsstandards verwendet werden können).
  • 20 stellt ein System dar. Das System kann hier beschriebene Ausführungsbeispiele für die Verarbeitung von NVMe-Befehlen verwenden. Ein System 2000 umfasst einen Prozessor 2010, der die Verarbeitung, das Operationsmanagement und die Ausführung von Anweisungen für das System 2000 bereitstellt. Der Prozessor 2010 kann irgendeine Art von Mikroprozessor, zentraler Verarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU), Verarbeitungskern oder andere Verarbeitungshardware umfassen, um die Verarbeitung für das System 2000 oder eine Kombination von Prozessoren bereitzustellen. Der Prozessor 2010 steuert den Gesamtbetrieb des Systems 2000 und kann ein oder mehrere programmierbare Allzweck- oder Spezialzweck-Mikroprozessoren, digitale Signalprozessoren (DSPs; digital signal processors), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Logikbauelemente (PLDs; programmable logic devices) oder Ähnliches oder eine Kombination solcher Bauelemente sein oder umfassen.
  • Bei einem Beispiel umfasst das System 2000 eine Schnittstelle 2012, die mit einem Prozessor 2010 gekoppelt ist, was eine Höhere-Geschwindigkeits-Schnittstelle oder eine Hoher-Durchsatz-Schnittstelle für Systemkomponenten darstellen kann, die Höhere-Bandbreite-Verbindungen benötigen, wie beispielsweise ein Speicherteilsystem 2020, Grafikschnittstellen-Komponenten 2040 oder Beschleuniger 2042. Die Schnittstelle 2012 stellt eine Schnittstellenschaltung dar, die eine eigenständige Komponente sein kann oder auf einem Prozessor-Die integriert sein kann. Falls vorhanden, bildet eine Grafikschnittstelle 2040 eine Schnittstelle mit Grafikkomponenten, um an einen Nutzer des Systems 2000 eine visuelle Anzeige bereitzustellen. Bei einem Beispiel kann die Grafikschnittstelle 2040 eine hochauflösende (HD; high definition) Anzeige antreiben, die an einen Nutzer eine Ausgabe bereitstellt. Hochauflösend kann sich auf eine Anzeige beziehen, die eine Pixel dichte von ungefähr 100 PPI (pixels per inch; Pixel pro Zoll) oder größer aufweist und kann Formate wie beispielsweise Full HD (z. B. 1080p), Retina-Displays (Retina-Anzeigen), 4K (ultra-high definition oder UHD; ultrahochauflösend) oder andere umfassen. Bei einem Beispiel kann die Anzeige eine Touchscreen-Anzeige umfassen. Bei einem Beispiel erzeugt die Grafikschnittstelle 2040 eine Anzeige basierend auf Daten, die in dem Speicher 2030 gespeichert sind oder basierend auf Operationen, die von dem Prozessor 2010 ausgeführt werden oder beidem. Bei einem Beispiel erzeugt die Grafikschnittstelle 2040 eine Anzeige basierend auf Daten, die in dem Speicher 2030 gespeichert sind oder basierend auf Operationen, die von dem Prozessor 2010 ausgeführt werden oder beidem.
  • Die Beschleuniger 2042 können eine Programmierbare- oder Feste-Funktion-Offload-Engine sein, auf die ein Prozessor 2010 zugreifen kann oder die von einem selben 1010 verwendet werden kann. Beispielsweise kann ein Beschleuniger zwischen den Beschleunigern 2042 Kompressions-(DC) Fähigkeit, Kryptographiedienste wie beispielsweise Public-Key-Verschlüsselung (PKE; public key encryption), Chiffrieren, Hash-/Authentifizierungs-Fähigkeiten, Entschlüsselung oder andere Fähigkeiten oder Dienste bereitstellen. Bei einigen Ausführungsbeispielen stellt ein Beschleuniger zwischen den Beschleunigern 2042 zusätzlich oder alternativ die hierin beschriebenen Feldauswahlsteuerungsfähigkeiten bereit. In einigen Fällen können die Beschleuniger 2042 in eine CPU-Buchse integriert sein (z. B. ein Verbinder zu einer Hauptplatine oder Schaltungsplatine, die eine CPU umfasst und eine elektrische Schnittstelle mit der CPU bereitstellt). Beispielsweise können die Beschleuniger 2042 einen Einzel- oder Multi-Kern-Prozessor, eine Grafikverarbeitungseinheit, eine logische Ausführungseinheit, Ein- oder Multi-Level-Cache, funktionale Einheiten verwendbar zur unabhängigen Ausführung von Programmen oder Threads, anwendungsspezifische integrierte Schaltungen (ASICs), Neuronales-Netz-Prozessoren (NNPs; neural network processors), programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie beispielsweise feldprogrammierbare Gate-Arrays (FPGAs) umfassen. Die Beschleuniger 2042 können mehrere neuronale Netzwerke, Prozessorkerne bereitstellen oder Grafikverarbeitungseinheiten können für die Verwendung durch Modelle der künstlichen Intelligenz (KI (artificial intelligence (AI)) oder des maschinellen Lernens (ML; machine learning) zur Verfügung gestellt werden. Beispielsweise kann das KI-Modell irgendeines oder eine Kombination verwenden oder umfassen von: einem Bestärkendes-Lernen-Schema, einem Q-Lernschema, Deep-Q-Lernen oder Asynchronous Advantage Actor-Critic (A3C), einem kombinatorischen neuronalen Netzwerk, einem rekurrierenden kombinatorischen neuronalen Netzwerk oder einem anderen KI- oder ML-Modell. Mehrere neuronale Netzwerke, Prozessorkerne oder Grafikverarbeitungseinheiten können zur Verwendung durch KI- oder ML-Modelle zur Verfügung gestellt werden.
  • Ein Speicherteilsystem 2020 stellt den Hauptspeicher des Systems 2000 dar und stellt Speicherung für Code, der durch den Prozessor 2010 ausgeführt werden soll, oder Datenwerte, die bei Ausführung einer Routine verwendet werden sollen, bereit. Das Speicherteilsystem 2020 kann eine oder mehrere Speichervorrichtungen 2030 umfassen, wie beispielsweise Nurlesespeicher (ROM; read-only memory), Flash-Speicher, eine oder mehrere Varianten eines Direktzugriffsspeichers (RAM) wie beispielsweise DRAM, oder andere Speichervorrichtungen, oder eine Kombination solcher Vorrichtungen. Ein Speicher 2030 speichert und hostet unter anderem ein Betriebssystem (OS) 2032, um eine Softwareplattform für die Ausführung von Anweisungen in dem System 2000 bereitzustellen. Zusätzlich können Anwendungen 2034 auf der Software-Plattform von OS 2032 von dem Speicher 2030 ausgeführt werden. Die Anwendungen 2034 stellen Programme dar, die ihre eigene operative Logik zur Ausführung einer oder mehrerer Funktionen aufweisen. Prozesse 2036 stellen Mittel oder Routinen dar, die Hilfsfunktionen an das OS 2032 oder eine oder mehrere Anwendungen 2034 oder eine Kombination bereitstellen. Das OS 2032, die Anwendungen 2034 und die Prozesse 2036 stellen Software-Logik bereit, um Funktionen für das System 2000 bereitzustellen. Bei einem Beispiel umfasst das Speicherteilsystem 2020 eine Speichersteuerung 2022, die eine Speichersteuerung zum Erzeugen und Erteilen von Befehlen an den Speicher 2030 ist. Es wird darauf hingewiesen, dass die Speichersteuerung 2022 ein physischer Teil des Prozessors 2010 oder ein physischer Teil der Schnittstelle 2012 sein kann. Zum Beispiel kann die Speichersteuerung 2022 eine integrierte Speichersteuerung sein, die auf einer Schaltung mit dem Prozessor 2010 integriert ist.
  • Bei einigen Beispielen kann das OS 2032 eine Fähigkeit einer Vorrichtung bestimmen, die mit einem Vorrichtungstreiber verbunden ist. Beispielsweise kann das OS 2032 einen Hinweis auf die Fähigkeit einer Vorrichtung (z. B. eine NIC 2050 oder eine Speicherungskonfigurationsschnittstelle) empfangen, eine NIC 2050 zu konfigurieren, um die Handhabung der Übertragung oder des Empfangs von NVMe-Befehlen an eine Verarbeitungskomponente auszulagern. Das OS 2032 kann einen Treiber auffordern, die NIC 2050 zu aktivieren oder zu deaktivieren, um irgendeine der hier beschriebenen Fähigkeiten auszuführen. Bei einigen Beispielen kann das OS 2032 selbst die NIC 2050 aktivieren oder deaktivieren, um irgendeine der hier beschriebenen Fähigkeiten auszuführen. Das OS 2032 kann Anfragen (z. B. von einer Anwendung oder VM) an die NIC 2050 bereitstellen, um eine oder mehrere Fähigkeiten der NIC 2050 zu nutzen. Beispielsweise kann irgendeine Anwendung die Verwendung oder Nichtverwendung irgendeiner der hier beschriebenen Fähigkeiten durch die NIC 2050 anfordern.
  • Auch wenn nicht eigens dargestellt, versteht es sich, dass das System 2000 einen oder mehrere Busse oder Bus-Systeme zwischen Vorrichtungen umfassen kann, wie beispielsweise einen Speicher-Bus, einen Grafik-Bus, Schnittstellen-Busse 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 umfassen. Busse können zum Beispiel einen oder mehrere von einem Systembus, einem Peripheriekomponentenverbindungs- (PCI; peripheral component interconnect) Bus, einem HyperTransport- oder Industry Standard Architecture- (ISA) Bus, einem Small Computer System Interface- (SCSI-) Bus, einem universellen seriellen Bus (USB; universal serial bus) oder einem Institute of Electrical and Electronics Engineers- (IEEE) Standard 1394-Bus umfassen.
  • Bei einem Beispiel umfasst das System 2000 eine Schnittstelle 2014, die mit der Schnittstelle 2012 gekoppelt sein kann. Bei einem Beispiel stellt die Schnittstelle 2014 eine Schnittstellenschaltung dar, die eigenständige Komponenten und eine integrierte Schaltungsanordnung umfassen kann. Bei einem Beispiel koppeln mehrere Nutzerschnittstellenkomponenten oder Peripheriekomponenten oder beide mit der Schnittstelle 2014. Eine Netzwerkschnittstelle 2050 stellt an das System 2000 die Fähigkeit bereit, über eines oder mehrere Netzwerke mit entfernten Vorrichtungen (z. B. Servern oder anderen Rechenvorrichtungen) zu kommunizieren. Die Netzwerkschnittstelle 2050 kann einen Ethernet-Adapter, drahtlose Verbindungskomponenten, Zelluläres-Netzwerk-Verbindungskomponenten, USB (Universal Serial Bus) oder andere drahtgebundene oder drahtlose standard-basierte oder proprietäre Schnittstellen umfassen. Die Netzwerkschnittstelle 2050 kann Daten an eine entfernte Vorrichtung übertragen, was das Senden von in dem Speicher gespeicherten Daten umfassen kann. Die Netzwerkschnittstelle 2050 kann Daten von einer entfernten Vorrichtung empfangen, was das Speichern der empfangenen Daten in dem Speicher umfassen kann. Verschiedene Ausführungsbeispiele können in Verbindung mit der Netzwerkschnittstelle 2050, dem Prozessor 2010 und dem Speicherteilsystem 2020 verwendet werden.
  • Bei einem Beispiel umfasst das System 2000 eine oder mehrere Eingangs-/Ausgangs- (I/O-) Schnittstellen 2060. Eine I/O-Schnittstelle 2060 kann eine oder mehrere Schnittstellenkomponenten umfassen, über die ein Nutzer mit dem System 2000 interagiert (z. B. Audio-, alphanumerische, tastbare/berührbare oder andere Schnittstellen). Eine Peripherieschnittstelle 2070 kann irgendeine Hardwareschnittstelle umfassen, die oben nicht ausdrücklich erwähnt wurde. Peripherievorrichtungen beziehen sich im Allgemeinen auf Vorrichtungen, die abhängig mit dem System 2000 verbinden. Eine abhängige Verbindung ist eine, bei der das System 2000 die Software-Plattform oder Hardware-Plattform oder beide bereitstellt, auf der die Operation ausgeführt wird und mit der ein Nutzer interagiert.
  • Bei einem Beispiel umfasst das System 2000 ein Speicherungsteilsystem 2080, um Daten in einer nichtflüchtigen Weise zu speichern. Bei einem Beispiel können in bestimmten Systemimplementierungen zumindest bestimmte Komponenten einer Speicherung 2080 mit Komponenten des Speicherteilsystems 2020 überlappen. Das Speicherungsteilsystem 2080 umfasst (eine) Speicherungsvorrichtung(en) 2084, die irgendein herkömmliches Medium zum Speichern großer Datenmengen auf nichtflüchtige Weise sein oder umfassen können, wie beispielsweise eine oder mehrere magnetische, Festkörper- oder optisch-basierte Platten oder eine Kombination. Eine Speicherung 2084 umfasst einen Code oder Anweisungen und Daten 2086 in einem dauerhaften Zustand (d. h. der Wert bleibt trotz Unterbrechung der Leistung zu dem System 2000 erhalten). Die Speicherung 2084 kann allgemein als ein „Speicher“ betrachtet werden, obwohl der Speicher 2030 üblicherweise der Ausführungs- oder Betriebsspeicher ist, um an den Prozessor 2010 Anweisungen bereitzustellen. Während die Speicherung 2084 nichtflüchtig ist, kann der Speicher 2030 einen flüchtigen Speicher umfassen (z. B. der Wert oder Zustand der Daten ist unbestimmt, wenn die Leistung zu dem System 2000 unterbrochen ist). Bei einem Beispiel umfasst das Speicherungsteilsystem 2080 eine Steuerung 2082, um mit der Speicherung 2084 eine Schnittstelle zu bilden. Bei einem Beispiel ist die Steuerung 2082 ein physischer Teil der Schnittstelle 2014 oder des Prozessors 2010 oder kann Schaltungen oder Logik sowohl in dem Prozessor 2010 als auch in der Schnittstelle 2014 umfassen.
  • Ein flüchtiger Speicher ist ein Speicher, dessen Zustand (und damit die darin gespeicherten Daten) unbestimmt ist, falls Leistung zu der Vorrichtung unterbrochen wird. Ein dynamischer flüchtiger Speicher erfordert ein Aktualisieren der Daten, die in der Vorrichtung gespeichert sind, um den Zustand aufrechtzuerhalten. Ein Beispiel für einen dynamischen flüchtigen Speicher umfasst einen DRAM (Dynamic Random Access Memory; dynamischen Direktzugriffsspeicher) oder eine Variante wie beispielsweise einen synchronen DRAM (SDRAM; Synchronous DRAM). Ein weiteres Beispiel für einen flüchtigen Speicher umfasst einen Cache oder einen statischen Direktzugriffsspeicher (SRAM; static random access memory). Ein Speicherteilsystem, wie es hierin beschrieben ist, kann mit einer Reihe von Speichertechnologien kompatibel sein, wie beispielsweise DDR3 (Double Data Rate Version 3, ursprüngliche Herausgabe durch JEDEC (Joint Electronic Device Engineering Council) am 27. Juni 2007). DDR4 (DDR-Version 4, erste Spezifikation veröffentlicht im September 2012 durch JEDEC), DDR4E (DDR-Version 4), LPDDR3 (Low Power DDR-Version3 (Niedrig-Leistungs-DDR-Version3), JESD209-3B, August 2013 durch JEDEC), LPDDR4) LPDDR-Version 4, JESD209-4, ursprünglich veröffentlicht durch JEDEC im August 2014), WIO2 (Wide Input/Output Version 2 (breiter Eingang/Ausgang Version 2), JESD229-2, ursprünglich veröffentlicht durch JEDEC im August 2014, HBM (High Bandwidth Memory (Hohe-Bandbreite-Speicher), JESD325, ursprünglich veröffentlicht durch JEDEC im Oktober 2013, LPDDR5 (derzeit in Diskussion durch JEDEC), HBM2 (HBM-Version 2), derzeit in Diskussion durch JEDEC, oder anderen oder Kombinationen von Speichertechnologien, und Technologien, die auf Herleitungen oder Erweiterungen solcher Spezifikationen basieren. Die JEDEC-Standards sind unter www.jedec.org verfügbar.
  • Eine nichtflüchtige Speicher- (NVM-; non-volatile memory) Vorrichtung ist ein Speicher, dessen Zustand bestimmt wird, auch falls Leistung zu der Vorrichtung unterbrochen wird. Bei einem Ausführungsbeispiel kann die NVM-Vorrichtung eine blockadressierbare Speichervorrichtung, wie beispielsweise NAND-Technologien, oder genauer, einen Multi-Schwellenpegel-NAND-Flash-Speicher (z. B. Single-Level Cell („SLC“), Multi-Level Cell („MLC“), Quad-Level Cell („QLC“), Tri-Level Cell („TLC“) oder eine andere NAND) umfassen. Eine NVM-Vorrichtung kann auch eine byteadressierbare dreidimensionale Write-in-Place Cross Point- (Vor-Ort-Schreiben-Kreuzpunkt-) Speichervorrichtung oder eine andere byteadressierbare Write-in-Place-NVM-Vorrichtung (auch als dauerhafter Speicher bezeichnet) umfassen, wie beispielsweise einen ein- oder mehrstufigen Phasenwechselspeicher (PCM; Phase Change Memory) oder Phasenwechselspeicher mit einem Schalter (PCMS), Intel® Optane™-Speicher, NVM-Vorrichtungen, die Chalkogenidphasenwechselmaterial (z. B. Chalkogenidglas) verwenden, einen resistiven Speicher umfassend Metalloxid-Basis, Sauerstoff-Leerstellenbasis und Conductive Bridge Random Access Memory (CB-RAM), Nanodrahtspeicher, ferroelektrischer Direktzugriffsspeicher (FeRAM, FRAM), magnetoresistiver Direktzugriffsspeicher (MRAM) mit Memristor-Technologie, Spin Transfer Torque- (STT-) MRAM, eine auf Spintronik-Magnet-Übergang-Speicher basierende Vorrichtung, eine auf magnetischem Tunnelübergang (MTJ; magnetic tunneling junction) basierende Vorrichtung, eine DW (Domain Wall; Domänenwand) und SOT (Spin Orbit Transfer) basierte Vorrichtung, eine thyristorbasierte Speichervorrichtung oder eine Kombination aus einem der Obigen oder einen anderen Speicher.
  • Eine Leistungsquelle (nicht abgebildet) stellt an die Komponenten des Systems 2000 Leistung bereit. Insbesondere bildet eine Leistungsquelle üblicherweise eine Schnittstelle mit einer oder mehreren Leistungsversorgungen in dem System 2000, um an die Komponenten des Systems 2000 Leistung bereitzustellen. Bei einem Beispiel umfasst die Leistungsversorgung einen AC-zu-DC-(Wechselstrom-zu-Gleichstrom-; alternating current to direct current) Adapter zum Einstecken in eine Steckdose. Eine solche AC-Leistung kann eine erneuerbare Energie- (z. B. Solarleistung) Leistungsquelle sein. Bei einem Beispiel umfasst eine Leistungsquelle eine DC-Leistungsquelle, wie beispielsweise einen externen AC-zu-DC-Wandler. Bei einem Beispiel umfasst eine Leistungsquelle oder Leistungsversorgung drahtlose Ladehardware zum Aufladen über die Nähe zu einem Ladefeld. Bei einem Beispiel kann eine Leistungsquelle eine interne Batterie, eine Wechselstromversorgung, eine bewegungsbasierte Leistungsversorgung, eine Solarleistungsversorgung oder eine Brennstoffzellenquelle umfassen.
  • Bei einem Beispiel kann das System 2000 unter Verwendung von miteinander verbundenen Rechenschlitten aus Prozessoren, Speichern, Speicherungen, Netzwerkschnittstellen und anderen Komponenten implementiert sein. Hochgeschwindigkeitsverbindungen können verwenden werden wie beispielsweise: Ethernet (IEEE 802.3), entfernter Direktzugriffsspeicher (RDMA: remote direct memory access), InfiniBand, Internet Wide Area RDMA Protocol (iWARP), quick UDP Internet Connections (QUIC), RDMA over Converged Ethernet (RoCE), Peripheral Component Interconnect express (PCIe), Intel QuickPath Interconnect (QPI), Intel Ultra Path Interconnect (UPI), Intel On-Chip System Fabric (IOSF), Omnipath, Compute Express Link (CXL), HyperTransport, high-speed fabric, NVLink, Advanced Microcontroller Bus Architecture (AMBA) Interconnect, OpenCAPI, Gen-Z, Cache Coherent Interconnect for Accelerators (CCIX), 3GPP Long Term Evolution (LTE) (4G), 3GPP 5G und Variationen derselben.
  • Ausführungsbeispiele hierin können in verschiedenen Arten von Rechen- und Netzwerk-Ausrüstung, wie beispielsweise Schaltern, Routern, Racks und Blade-Servern, wie sie in einem Rechenzentrum und/oder einer Serverfarmumgebung verwendet werden, implementiert sein. Die Server, die in Rechenzentren und Serverfarmen verwendet werden, umfassen angeordnete Server-Konfigurationen wie beispielsweise Rack-basierte Server oder Blade-Server. Diese Server sind in Kommunikation via verschiedene Netzwerkbereitstellung miteinander verbunden, wie beispielsweise ein Partitionieren von Serversätzen in lokale Netzwerke (LANs; Local Area Networks) mit geeigneten Schalt- und Routing-Einrichtungen zwischen den LANs, um ein privates Intranet zu bilden. So können beispielsweise Cloud-Hosting-Einrichtungen typischerweise große Rechenzentren mit einer Vielzahl von Servern nutzen. Ein Blade umfasst eine separate Rechenplattform, die ausgebildet ist, serverartige Funktionen auszuführen, das heißt, ein „Server auf einer Karte“. Dementsprechend umfasst jedes Blade Komponenten, die herkömmlichen Servern gemeinsam sind, umfassend eine gedruckte Hauptschaltungsplatine (Hauptplatine; main board), die eine interne Verkabelung (d. h. Busse) zum Koppeln geeigneter integrierter Schaltungen (ICs) und anderer Komponenten, die auf der Platine befestigt sind, bereitstellt.
  • Bei einigen Beispielen können die Netzwerkschnittstelle und andere hier beschriebene Ausführungsbeispiele in Verbindung mit einer Basisstation (z. B. 3G, 4G, 5G usw.), Makro-Basisstation (z.B. 5G-Netzwerke), Picostation (z.B. ein IEEE 802.11-kompatibler Zugangspunkt), Nanostation (z. B. für Point-to-MultiPoint- (PtMP-) Anwendungen), lokale Rechenzentren, externe Rechenzentren, Edge-Netzwerkelemente, Nebelnetzwerkelemente und/oder hybride Rechenzentren (z. B. Rechenzentren, die Virtualisierung, Cloud und softwaredefinierte Netzwerke verwenden, um Anwendungs-Workloads über physische Rechenzentren und verteilte Multi-Cloud-Umgebungen hinweg bereitzustellen).
  • Verschiedene Beispiele können unter Verwendung von Hardwareelementen, Softwareelementen oder einer Kombination von beiden implementiert sein. Bei einigen Beispielen können Hardwareelemente Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktivitäten usw.), integrierte Schaltungen, ASICs, PLDs, DSPs, FPGAs, Speichereinheiten, Logik-Gates, Register, ein Halbleiterbauelement, Chips, Mikrochips, Chipsätze usw. umfassen. Bei einigen Beispielen können Softwareelemente Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, APIs, Anweisungssätze, einen Rechencode, einen Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination davon umfassen. Die Bestimmung, ob ein Beispiel unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert wird, kann gemäß irgendeiner Anzahl von Faktoren, wie beispielsweise der gewünschten Rechenrate, den Leistungspegeln, den Wärmetoleranzen, dem Verarbeitungszyklus-Budget, den Eingangsdatenraten, den Ausgangsdatenraten, den Speicherressourcen, den Datenbusgeschwindigkeiten und anderen Entwurf- oder Performanceeinschränkungen, wie für eine gegebene Implementierung gewünscht, variieren. Ein Prozessor kann eines oder mehrere sein aus einer Kombination aus einer Hardware-Zustandsmaschine, digitalen Steuerlogik, zentralen Verarbeitungseinheit oder irgendwelchen Hardware-, Firmware- und/oder Softwareelementen.
  • Einige Beispiele können unter Verwendung von oder als ein Herstellungsartikel oder zumindest als ein computerlesbares Medium implementiert sein. Ein computerlesbares Medium kann ein nichtflüchtiges Speicherungsmedium zum Speichern von Logik umfassen. Bei einigen Beispielen kann das nichtflüchtige Speicherungsmedium eine oder mehrere Arten von computerlesbaren Speicherungsmedien umfassen, die in der Lage sind, elektronische Daten zu speichern, umfassend flüchtigen Speicher oder nichtflüchtigen Speicher, entfernbaren oder nicht entfernbaren Speicher, löschbaren oder nicht löschbaren Speicher, beschreibbaren oder wiederbeschreibbaren Speicher und so weiter. Bei einigen Beispielen kann die Logik verschiedene Softwareelemente, wie beispielsweise Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, API, Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination davon umfassen.
  • Gemäß einigen Beispielen kann ein computerlesbares Medium ein nichtflüchtiges Speicherungsmedium zum Speichern oder Aufrechterhalten von Anweisungen umfassen, das, wenn es durch eine Maschine, eine Rechenvorrichtung oder ein System ausgeführt wird, die Maschine, die Rechenvorrichtung oder das System veranlasst, Verfahren und/oder Operationen gemäß den beschriebenen Beispielen auszuführen. Die Anweisungen können irgendeine geeignete Art von Code umfassen, wie beispielsweise einen Quellcode, einen kompilierten Code, einen interpretierten Code, einen ausführbaren Code, einen statischen Code, einen dynamischen Code und Ähnliches. Die Anweisungen können gemäß einer vordefinierten Computersprache, -weise oder -syntax implementiert sein, um eine Maschine, ein(e) Rechenvorrichtung oder System anzuweisen, eine bestimmte Funktion auszuführen. Die Anweisungen können unter Verwendung irgendeiner geeigneten Hochsprachen-, Niedersprachen-, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert sein.
  • Ein oder mehrere Aspekte von zumindest einem Beispiel können durch repräsentative Anweisungen implementiert sein, die auf zumindest einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logiken innerhalb des Prozessors repräsentiert, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System gelesen werden, die Maschine, die Rechenvorrichtung oder das System veranlassen, Logik zur Ausführung der hierin beschriebenen Techniken herzustellen. Solche Darstellungen, die als „IP-Kerne“ bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Fertigungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Das Auftreten der Phrase „ein einzelnes Beispiel“ oder „ein Beispiel“ bezieht sich nicht notwendigerweise auf dasselbe Beispiel oder Ausführungsbeispiel. Irgendein hierin beschriebener Aspekt kann mit irgendeinem anderen Aspekt oder ähnlichen hierin beschriebenen Aspekt kombiniert werden, unabhängig davon, ob die Aspekte in Bezug auf dieselbe Figur oder dasselbe Element beschrieben sind. Ein Teilen, Auslassen oder Umfassen von Blockfunktionen, die in den beiliegenden Figuren abgebildet sind, lässt nicht herleiten, dass die Hardwarekomponenten, Schaltungen, Software und/oder Elemente zur Implementierung dieser Funktionen notwendigerweise unterteilt, weggelassen oder in Ausführungsbeispielen umfasst sein müssten.
  • Einige Beispiele können unter Verwendung der Ausdrücke „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen beschrieben sein. Diese Begriffe sind nicht notwendigerweise als Synonyme füreinander vorgesehen. Beispielsweise können Beschreibungen, die die Begriffe „verbunden“ und/oder „gekoppelt“ verwenden, möglicherweise anzeigen, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt miteinander stehen. Der Begriff „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, jedoch weiter miteinander zusammenarbeiten oder interagieren.
  • Die Begriffe „erste,r,s“, „zweite,r,s“ und Ähnliches bezeichnen hierin nicht irgendeine Reihenfolge, Menge oder Bedeutung, sondern werden vielmehr dazu verwendet, ein Element von einem anderen zu unterscheiden. Die Begriffe „ein,e,s“ (a, an) bezeichnen hierin nicht eine Mengenbeschränkung, sondern vielmehr das Vorhandensein von zumindest einem von den Gegenständen, auf die Bezug genommen wird. Der Begriff „aufgeschaltet“ (asserted), der hierin in Bezug auf ein Signal verwendet wird, bezeichnet einen Zustand des Signals, in dem das Signal aktiv ist und der durch Anwenden irgendeines Logikpegels auf das Signal, entweder Logik 0 oder Logik 1, erreicht werden kann. Die Begriffe „folgen“ oder „nach“ können sich auf unmittelbar folgen oder folgen nach einem anderen Ereignis oder Ereignissen beziehen. Andere Abfolgen von Schritten können auch gemäß alternativen Ausführungsbeispielen ausgeführt werden. Ferner können zusätzliche Schritte, abhängig von den bestimmten Anwendungen, hinzugefügt oder entfernt werden. Es kann irgendeine Kombination von Änderungen verwendet werden und ein Fachmann auf dem Gebiet, der den Nutzen dieser Offenbarung hat, würde die vielen Variationen, Modifikationen und alternativen Ausführungsbeispiele verstehen.
  • Eine disjunktive Sprache, wie beispielsweise die Phrase „zumindest eines von X, Y oder Z“, sofern nicht anderweitig spezifisch angegeben, wird ansonsten innerhalb des Kontexts verstanden, wie er im Allgemeinen verwendet wird, um darzustellen, dass ein Gegenstand, ein Begriff usw. entweder X, Y oder Z oder irgendeine Kombination davon (z. B. X, Y und/oder Z) sein kann. Somit ist solch disjunktive Sprache nicht im Allgemeinen dafür vorgesehen und soll nicht implizieren, dass bestimmte Ausführungsbeispiele das jeweilige Vorliegen von zumindest einem von X, zumindest einem von Y oder zumindest einem von Z erfordern. Zusätzlich soll konjunktive Sprache wie beispielsweise die Phrase „zumindest eines von X, Y und Z“, sofern nicht anderweitig spezifisch angegeben, auch als X, Y, Z oder irgendeine Kombination davon, umfassend „X, Y und/oder Z“, verstanden werden.
  • Ein Beispiel umfasst ein Rechensystem, umfassend: eine Netzwerkschnittstelle und eine Rechenplattform, wobei die Netzwerkschnittstelle zumindest einen Prozessor umfasst, der ausgebildet ist: eine physische Funktion oder virtuelle Funktion als eine Peripheral Component Interconnect Express- (PCIe-) Vorrichtung zu konfigurieren, die im Userspace zugänglich ist; Mailbox-Warteschlangen zuzuweisen, um Befehle zwischen einem Auslagerungs-Block einer Netzwerkschnittstelle und einem Verarbeitungsblock weiterzugeben; und Befehle von einer Mailbox-Warteschlange in einen gemeinschaftlich verwendeten Speicher zu kopieren, der für den Verarbeitungsblock zugänglich ist.
  • Beispiel 1 umfasst irgendein Beispiel und umfasst eine Netzwerkschnittstellensteuerungsvorrichtung, umfassend eine Prozessorkomponente umfassend zumindest einen Prozessor, um Entfernter-Speicherzugriff-Kommunikationen zu erzeugen, um auf eine erste Gruppe aus einem oder mehreren Namensräumen zuzugreifen; eine Speicherungsschnittstellenschaltungsanordnung, um Entfernter-Speicherzugriff-Kommunikationen zu erzeugen, um auf eine zweite Gruppe aus einem oder mehreren Namensräumen zuzugreifen; und eine Speicherungskonfigurationsschaltungsanordnung mit einer Vorrichtungsschnittstelle, die über einen Userspace-Treiber zugänglich ist, wobei die Speicherungskonfigurationsschaltungsanordnung ausgebildet ist, die erste und zweite Gruppe aus einem oder mehreren Namensräumen einzustellen.
  • Beispiel 2 umfasst irgendein Beispiel, wobei die Entfernter-Speicherzugriff-Kommunikationen mit Non-Volatile Memory Express over Fabrics (NVMe-oF), Internet Small Computer Systems Interface (iSCSI) oder einem proprietären Protokoll kompatibel sind.
  • Beispiel 3 umfasst irgendein Beispiel, wobei die Vorrichtungsschnittstelle mit einer Peripheral Component Interconnect Express (PCIe) kompatibel ist und die Speicherungskonfigurationsschaltungsanordnung als physische Funktion (PF; physical function) oder virtuelle Funktion (VF; virtual function) zugänglich ist.
  • Beispiel 4 umfasst irgendein Beispiel, wobei die Speicherungskonfigurationsschaltungsanordnung ausgebildet ist, Befehle und Metadaten zu kopieren, die an Mailbox-Warteschlangen für einen Zugriff durch den zumindest einen Prozessor der Prozessorkomponente gesendet wurden.
  • Beispiel 5 umfasst irgendein Beispiel, wobei die Speicherungskonfigurationsschaltungsanordnung ausgebildet ist, einen Lastausgleich anzuwenden, um Befehle zwischen den Mailbox-Warteschlangen zu verteilen.
  • Beispiel 6 umfasst irgendein Beispiel, wobei die Befehle Non-Volatile Memory Express- (NVMe-) Befehle oder Internet Small Computer Systems Interface- (iSCSI-) Befehle umfassen.
  • Beispiel 7 umfasst irgendein Beispiel, wobei: der Userspace-Treiber ausgebildet ist, auf dem zumindest einen Prozessor der Prozessorkomponente auszuführen und die Speicherungskonfigurationsschaltungsanordnung durch den Userspace-Treiber konfiguriert wird.
  • Beispiel 8 umfasst irgendein Beispiel, wobei: die Speicherungskonfigurationsschaltungsanordnung zu einem Userspace-Treiber wieder zuweisbar ist, der auf einem Host-Server ausführt, basierend darauf, dass die Prozessorkomponente inaktiv wird oder entfernt wird.
  • Beispiel 9 umfasst irgendein Beispiel, wobei der Userspace-Treiber ausgebildet ist, Zugriff auf die Konfigurationsschaltungsanordnung über die Vorrichtungsschnittstelle an eine Userspace-Anwendung durchzureichen.
  • Beispiel 10 umfasst irgendein Beispiel, wobei die Userspace-Anwendung auf Storage Performance Development Kit (SPDK), Data Plane Development Kit (DPDK) oder OpenDataPlane basiert.
  • Beispiel 11 umfasst irgendein Beispiel, und umfasst ein Verfahren, umfassend: durch eine Vorrichtungsschnittstelle, die über einen Userspace-Treiber zugänglich ist, ein Konfigurieren einer Speicherungskonfigurationsschnittstellenschaltungsanordnung einer Smart-Netzwerkschnittstellensteuerung (SmartIC; Smart Network Interface Controller), um Speicherzugriff-Kommunikationen zur Ausführung durch eine Prozessorkomponente, die mit der SmartNIC gekoppelt ist, zu kopieren.
  • Beispiel 12 umfasst irgendein Beispiel, und umfasst ein Konfigurieren der Prozessorkomponente, um Entfernter-Speicherzugriff-Kommunikationen für eine Gruppe aus einem oder mehreren Namensräumen zu erzeugen.
  • Beispiel 13 umfasst irgendein Beispiel, und umfasst ein Konfigurieren einer Schaltungsanordnung der SmartNIC, um Entferner-Speicherzugriffs-Kommunikationen für eine zweite Gruppe aus einem oder mehreren Namensräumen zu erzeugen.
  • Beispiel 14 umfasst irgendein Beispiel, wobei die Entfernter-Speicherzugriff-Kommunikationen mit Non-Volatile Memory Express over Fabrics (NVMe-oF), Internet Small Computer Systems Interface (iSCSI) oder einem proprietären Protokoll kompatibel sind.
  • Beispiel 15 umfasst irgendein Beispiel, wobei die Vorrichtungsschnittstelle mit einer Peripheral Component Interconnect Express (PCIe) kompatibel ist und die Speicherungskonfigurationsschnittstellenschaltungsanordnung als physische Funktion (PF) oder virtuelle Funktion (VF) zugänglich ist.
  • Beispiel 16 umfasst irgendein Beispiel, wobei die Speicherungskonfigurationsschnittstellenschaltungsanordnung ausgebildet ist, Befehle und Metadaten zu kopieren, die an Mailbox-Warteschlangen für einen Zugriff durch den zumindest einen Prozessor der Prozessorkomponente gesendet wurden
  • Beispiel 17 umfasst irgendein Beispiel, und umfasst ein Anwenden eines Lastausgleichs, um Befehle zwischen den Mailbox-Warteschlangen zu verteilen.
  • Beispiel 18 umfasst irgendein Beispiel, und umfasst ein computerlesbares Medium umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren verursachen, dass der eine oder die mehreren Prozessoren: einen Treiber ausführen, um eine Speicherungskonfigurationsschaltungsanordnung einer Smart-Netzwerkschnittstelle (SmartNIC) zu konfigurieren, um eine erste und zweite Gruppe aus einem oder mehreren Namensräumen zum Management durch die SmartNIC einzustellen, wobei: der Treiber in Userspace ausführt, die Speicherungskonfigurationsschaltungsanordnung durch den Treiber unter Verwendung einer Vorrichtungsschnittstelle zugänglich ist, eine Prozessorkomponente umfassend zumindest einen Prozessor ausgebildet ist, Entfernter-Speicherzugriff-Kommunikationen zu erzeugen, um auf die erste Gruppe aus einem oder mehreren Namensräumen zuzugreifen, und eine Speicherungsschnittstellenschaltungsanordnung, um Entfernter-Speicherzugriff-Kommunikationen zu erzeugen, um auf die zweite Gruppe aus einem oder mehreren Namensräumen zuzugreifen.
  • Beispiel 19 umfasst irgendein Beispiel, wobei die Entfernter-Speicherzugriff-Kommunikationen mit Non-Volatile Memory Express over Fabrics (NVMe-oF) kompatibel sind.
  • Beispiel 20 umfasst irgendein Beispiel, wobei die Vorrichtungsschnittstelle mit Peripheral Component Interconnect Express (PCIe) kompatibel ist und die Speicherungskonfigurationsschaltungsanordnung als physische Funktion (PF) oder virtuelle Funktion (VF) zugänglich ist.

Claims (21)

  1. Eine Netzwerkschnittstellensteuerungsvorrichtung, umfassend: eine Prozessorkomponente umfassend zumindest einen Prozessor, um Entfernter-Speicherzugriff-Kommunikationen zu erzeugen, um auf eine erste Gruppe aus einem oder mehreren Namensräumen zuzugreifen; eine Speicherungsschnittstellenschaltungsanordnung, um Entfernter-Speicherzugriff-Kommunikationen zu erzeugen, um auf eine zweite Gruppe aus einem oder mehreren Namensräumen zuzugreifen; und eine Speicherungskonfigurationsschaltungsanordnung mit einer Vorrichtungsschnittstelle, die über einen Userspace-Treiber zugänglich ist, wobei die Speicherungskonfigurationsschaltungsanordnung ausgebildet ist, die erste und zweite Gruppe aus einem oder mehreren Namensräumen einzustellen.
  2. Die Vorrichtung gemäß Anspruch 1, wobei die Entfernter-Speicherzugriff Kommunikationen mit Non-Volatile Memory Express over Fabrics, NVMe-oF, Internet Small Computer Systems Interface, iSCSI, oder einem proprietären Protokoll kompatibel sind.
  3. Die Vorrichtung gemäß einem der vorherigen Ansprüche, wobei die Vorrichtungsschnittstelle mit einer Peripheral Component Interconnect Express, PCIe, kompatibel ist und die Speicherungskonfigurationsschaltungsanordnung als physische Funktion, PF, oder virtuelle Funktion, VF, zugänglich ist.
  4. Die Vorrichtung gemäß einem der vorherigen Ansprüche, wobei die Speicherungskonfigurationsschaltungsanordnung ausgebildet ist, Befehle und Metadaten zu kopieren, die an Mailbox-Warteschlangen für einen Zugriff durch den zumindest einen Prozessor der Prozessorkomponente gesendet wurden.
  5. Die Vorrichtung gemäß Anspruch 4, wobei die Speicherungskonfigurationsschaltungsanordnung ausgebildet ist, einen Lastausgleich anzuwenden, um Befehle zwischen den Mailbox-Warteschlangen zu verteilen.
  6. Die Vorrichtung gemäß Anspruch 4 oder 5, wobei die Befehle Non-Volatile Memory Express-, NVMe-, Befehle oder Internet Small Computer Systems Interface-, iSCSI-, Befehle umfassen.
  7. Die Vorrichtung gemäß einem der vorherigen Ansprüche, wobei: der Userspace-Treiber ausgebildet ist, auf dem zumindest einen Prozessor der Prozessorkomponente auszuführen und die Speicherungskonfigurationsschaltungsanordnung durch den Userspace-Treiber konfiguriert wird.
  8. Die Vorrichtung gemäß Anspruch 7, wobei: die Speicherungskonfigurationsschaltungsanordnung zu einem Userspace-Treiber wieder zuweisbar ist, der auf einem Host-Server ausführt, basierend darauf, dass die Prozessorkomponente inaktiv wird oder entfernt wird.
  9. Die Vorrichtung gemäß einem der vorherigen Ansprüche, wobei der Userspace-Treiber ausgebildet ist, Zugriff auf die Konfigurationsschaltungsanordnung über die Vorrichtungsschnittstelle an eine Userspace-Anwendung durchzureichen.
  10. Die Vorrichtung gemäß Anspruch 9, wobei die Userspace-Anwendung auf Storage Performance Development Kit, SPDK, Data Plane Development Kit, DPDK, oder OpenDataPlane basiert.
  11. Die Vorrichtung gemäß einem der vorherigen Ansprüchen, umfassend: einen Server, einen Rack-Schalter oder ein Rechenzentrum, wobei der Server, der Rack-Schalter oder das Rechenzentrum mit der Netzwerkschnittstellensteuerung gekoppelt sind.
  12. Ein Verfahren, umfassend: durch eine Vorrichtungsschnittstelle, die über einen Userspace-Treiber zugänglich ist, ein Konfigurieren einer Speicherungskonfigurationsschnittstellenschaltungsanordnung einer Smart-Netzwerkschnittstellensteuerung, SmartNIC, um Speicherzugriff-Kommunikationen zur Ausführung durch eine Prozessorkomponente, die mit der SmartNIC gekoppelt ist, zu kopieren.
  13. Das Verfahren gemäß Anspruch 12, umfassend: Konfigurieren der Prozessorkomponente, um Entfernter-Speicherzugriff Kommunikationen für eine Gruppe aus einem oder mehreren Namensräumen zu erzeugen.
  14. Das Verfahren gemäß Anspruch 13, umfassend: Konfigurieren einer Schaltungsanordnung der SmartNIC, um Entferner-Speicherzugriffs-Kommunikationen für eine zweite Gruppe aus einem oder mehreren Namensräumen zu erzeugen.
  15. Das Verfahren gemäß Anspruch 13 oder 14, wobei die Entfernter-Speicherzugriff-Kommunikationen mit Non-Volatile Memory Express over Fabrics, NVMe-oF, Internet Small Computer Systems Interface, iSCSI, oder einem proprietären Protokoll kompatibel sind.
  16. Das Verfahren gemäß Anspruch 13, 14 oder 15, wobei die Vorrichtungsschnittstelle mit einer Peripheral Component Interconnect Express, PCIe, kompatibel ist und die Speicherungskonfigurationsschnittstellenschaltungsanordnung als physische Funktion, PF, oder virtuelle Funktion, VF, zugänglich ist.
  17. Das Verfahren gemäß einem der Ansprüche 12-16, wobei die Speicherungskonfigurationsschnittstellenschaltungsanordnung ausgebildet ist, Befehle und Metadaten zu kopieren, die an Mailbox-Warteschlangen für einen Zugriff durch zumindest einen Prozessor einer Prozessorkomponente gesendet wurden.
  18. Das Verfahren gemäß Anspruch 17, umfassend: Anwenden eines Lastausgleichs, um Befehle zwischen den Mailbox-Warteschlangen zu verteilen.
  19. Ein computerlesbares Medium umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren verursachen, dass der eine oder die mehreren Prozessoren: einen Treiber ausführen, um eine Speicherungskonfigurationsschaltungsanordnung einer Smart-Netzwerkschnittstelle, SmartNIC, zu konfigurieren, um eine erste und zweite Gruppe aus einem oder mehreren Namensräumen zum Management durch die SmartNIC einzustellen, wobei: der Treiber in Userspace ausführt, die Speicherungskonfigurationsschaltungsanordnung durch den Treiber unter Verwendung einer Vorrichtungsschnittstelle zugänglich ist, eine Prozessorkomponente umfassend zumindest einen Prozessor ausgebildet ist, Entfernter-Speicherzugriff-Kommunikationen zu erzeugen, um auf eine erste Gruppe aus einem oder mehreren Namensräumen zuzugreifen, und eine Speicherungsschnittstellenschaltungsanordnung ausgebildet ist, Entfernter-Speicherzugriff-Kommunikationen zu erzeugen, um auf eine zweite Gruppe aus einem oder mehreren Namensräumen zuzugreifen.
  20. Das computerlesbare Medium umfassend Anweisungen gemäß Anspruch 19, wobei die Entfernter-Speicherzugriff-Kommunikationen mit Non-Volatile Memory Express over Fabrics, NVMe-oF, kompatibel sind.
  21. Das computerlesbare Medium umfassend Anweisungen gemäß Anspruch 19 oder 20, wobei die Vorrichtungsschnittstelle mit Peripheral Component Interconnect Express, PCIe, kompatibel ist und die Speicherungskonfigurationsschaltungsanordnung als physische Funktion, PF, oder virtuelle Funktion, VF, zugänglich ist.
DE102020125046.0A 2019-10-16 2020-09-25 Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle Pending DE102020125046A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962916136P 2019-10-16 2019-10-16
US62/916,136 2019-10-16
US17/030,921 US11714763B2 (en) 2019-10-16 2020-09-24 Configuration interface to offload capabilities to a network interface
US17/030,921 2020-09-24

Publications (1)

Publication Number Publication Date
DE102020125046A1 true DE102020125046A1 (de) 2021-04-22

Family

ID=74343880

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020125046.0A Pending DE102020125046A1 (de) 2019-10-16 2020-09-25 Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle

Country Status (2)

Country Link
US (1) US11714763B2 (de)
DE (1) DE102020125046A1 (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11546336B1 (en) * 2019-10-22 2023-01-03 Amazon Technologies, Inc. Independently configurable access device stages for processing interconnect access requests
US11962518B2 (en) 2020-06-02 2024-04-16 VMware LLC Hardware acceleration techniques using flow selection
US11606310B2 (en) 2020-09-28 2023-03-14 Vmware, Inc. Flow processing offload using virtual port identifiers
US11875172B2 (en) 2020-09-28 2024-01-16 VMware LLC Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC
US11636053B2 (en) 2020-09-28 2023-04-25 Vmware, Inc. Emulating a local storage by accessing an external storage through a shared port of a NIC
US11593278B2 (en) 2020-09-28 2023-02-28 Vmware, Inc. Using machine executing on a NIC to access a third party storage not supported by a NIC or host
US20220100432A1 (en) * 2020-09-28 2022-03-31 Vmware, Inc. Distributed storage services supported by a nic
US11561705B2 (en) * 2021-03-18 2023-01-24 Dell Products L.P. Centralized discovery controller storage provisioning
CN113704165B (zh) * 2021-07-15 2023-09-12 郑州云海信息技术有限公司 一种超融合服务器、数据处理方法及装置
US20230041806A1 (en) * 2021-08-04 2023-02-09 Oracle International Corporation Location-independent programming data plane for packet processing
US11863376B2 (en) 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US11995024B2 (en) 2021-12-22 2024-05-28 VMware LLC State sharing between smart NICs
US11853611B2 (en) 2022-03-14 2023-12-26 Western Digital Technologies, Inc. Network interface card implementing composite zoned namespace architecture
US11907582B2 (en) * 2022-03-14 2024-02-20 Western Digital Technologies, Inc. Cloud storage device implementing composite zoned namespace architecture
US11847081B2 (en) * 2022-03-24 2023-12-19 Dell Products L.P. Smart network interface controller (SmartNIC) storage non-disruptive update
US11907530B2 (en) * 2022-03-25 2024-02-20 Dell Products L.P. Scalable quality of service (QoS) for a nonvolatile memory express™ environment
US11977504B2 (en) * 2022-04-26 2024-05-07 Dell Products L.P. Smart network interface controller operating system deployment
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs
CN116880759A (zh) * 2023-07-13 2023-10-13 北京大禹智芯科技有限公司 一种基于DPU的NVMe系统及其启动方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10587535B2 (en) * 2017-02-22 2020-03-10 Mellanox Technologies, Ltd. Adding a network port to a network interface card via NC-SI embedded CPU
US11249779B2 (en) * 2017-09-01 2022-02-15 Intel Corporation Accelerator interconnect assignments for virtual environments
TWI666901B (zh) * 2018-03-27 2019-07-21 緯穎科技服務股份有限公司 資料傳輸方法與使用此方法的主機系統
US11500549B2 (en) * 2019-04-19 2022-11-15 EMC IP Holding Company LLC Secure host access to storage system resources via storage system interface and internal switching fabric
US11010478B2 (en) * 2019-05-06 2021-05-18 Dell Products L.P. Method and system for management of secure boot certificates
US11442765B1 (en) * 2019-09-18 2022-09-13 Amazon Technologies, Inc. Identifying dependencies for processes for automated containerization
US11726827B2 (en) * 2021-02-19 2023-08-15 Vast Data Ltd. Hierarchical workload allocation in a storage system

Also Published As

Publication number Publication date
US20210019270A1 (en) 2021-01-21
US11714763B2 (en) 2023-08-01

Similar Documents

Publication Publication Date Title
DE102020125046A1 (de) Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle
EP4002134A1 (de) Direktspeicherzugriffs(dma)-motor mit netzwerkschnittstellenfähigkeiten
US20200319812A1 (en) Intermediary for storage command transfers
EP3706394B1 (de) Schreiben auf mehrere speicherziele
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
DE112018004798T5 (de) Technologien für ein bereitstellen von effizientem speicherzugriff auf einem beschleunigerschlitten
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
DE102020007986A1 (de) Proaktiver daten-vorabruf mit angewandter quality-of-service
DE102020127924A1 (de) Gemeinschaftlich verwendeter speicherraum unter vorrichtungen
DE112020006967T5 (de) Performanceüberwachung für kurzlebige funktionen
DE102020130971A1 (de) Schlanke arbeitsspeicherzuweisung unter verwendung von arbeitsspeicherpools
TW202223640A (zh) 提供用於資源存取的策略執行之技術
EP3716085B1 (de) Technologien für flexible i/o-endpunktbeschleunigung
US20200117605A1 (en) Receive buffer management
DE112020006858T5 (de) Dynamische interrupt-bereitstellung
DE102020110582A1 (de) TECHNOLOGIEN ZUR AUTOMATISCHEN ARBEITSLASTERKENNUNG UND CACHE-QoS-RICHTLINIENANWENDUNG
DE102020118312A1 (de) Technologien zum verwalten von disaggregierten beschleunigernetzwerken basierend auf remote direct memory access
DE102020130965A1 (de) Technologien für rasches booten mit fehlerkorrekturcode-arbeitsspeicher
DE102020113279A1 (de) Technologien zum managen von burst-bandbreite
DE102022126611A1 (de) Service-mesh-auslagerung an netzwerkvorrichtungen
DE102021122233A1 (de) Beschleuniger-controller-hub
DE102020130555A1 (de) Adaptiver datenversand basierend auf lastfunktionen
DE102022107778A1 (de) Adressübersetzung an einer zielnetzwerk-schnittstellenvorrichtung
EP3716088B1 (de) Technologien zur flexiblen protokollbeschleunigung
DE102020114020A1 (de) Technologien zum bereitstellen von effizientem nachrichten-polling

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: 2SPL PATENTANWAELTE PARTG MBB SCHULER SCHACHT , DE