DE102020007986A1 - Proaktiver daten-vorabruf mit angewandter quality-of-service - Google Patents

Proaktiver daten-vorabruf mit angewandter quality-of-service Download PDF

Info

Publication number
DE102020007986A1
DE102020007986A1 DE102020007986.5A DE102020007986A DE102020007986A1 DE 102020007986 A1 DE102020007986 A1 DE 102020007986A1 DE 102020007986 A DE102020007986 A DE 102020007986A DE 102020007986 A1 DE102020007986 A1 DE 102020007986A1
Authority
DE
Germany
Prior art keywords
memory
storage
accelerator
data
resources
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
DE102020007986.5A
Other languages
English (en)
Inventor
Francesc Guim Bernat
Slawomir PUTYRSKI
Susanne M. Balle
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 DE102020007986A1 publication Critical patent/DE102020007986A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory
    • 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)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Cooling Or The Like Of Electrical Apparatus (AREA)
  • Multi Processors (AREA)

Abstract

Beispiele hierin beziehen sich auf ein Vorabrufen von Inhalt aus einer entfernten Speichervorrichtung zu einer lokalen Speicherlage zu einem höheren Level-Cache oder Speicher. Eine Anwendung oder Vorrichtung kann eine Zeitverfügbarkeit für Daten anzeigen, die in einem höheren Level-Cache oder Speicher verfügbar sein sollen. Ein Vorabrufer, verwendet von einer Netzwerkschnittstelle, kann Ressourcen in irgendeiner intermediären Netzwerkvorrichtung in einem Datenpfad aus der entfernten Speichervorrichtung zu der lokalen Speicherlage zu dem höheren Level-Cache zuordnen. Speicherzugriffs-Bandbreite, Austrittbandbreite, Speicherplatz in irgendeiner intermediären Netzwerkvorrichtung können zum Vorabrufen von Inhalt zugeordnet werden. Bei einigen Beispielen kann ein proaktives Vorabrufen für Inhalt auftreten, von dem erwartet wird, dass ein Vorabrufen ausgeführt wird, aber ein Vorabrufen nicht erforderlich ist.

Description

  • TECHNISCHES GEBIET
  • Verschiedene hierin beschriebene Beispiele beziehen sich auf das Vorabrufen von Daten aus lokalen oder entfernten Speichervorrichtungen.
  • Hintergrund
  • Cloud Computing stellt einer Client-Vorrichtung (client device) enorme Rechen- und Speicherungsressourcen von entfernten Computern bereit. Der Client kann einen entfernten Computer oder ein Cluster von Computern nutzen, um eine Vielzahl von Verarbeitungs- oder Rechenoperationen sowie entfernte Datenverarbeitung und Datenspeicherung oder -abruf durchzuführen. Ein Client kann z.B. ein Smartphone, eine Internet der Dinge (IoT; Internet of Things)-kompatible Vorrichtung wie ein Smart Home, Haustechnik (z.B. Kühlschrank, Licht, Kamera oder Schloss), eine tragbare Vorrichtung (z.B. Gesundheitsmonitor, Smart Watch, Smart Glasses), ein verbundenes Fahrzeug (z.B. selbstfahrendes Auto) und eine Smart City (z.B. Verkehrssensor, Parksensor, Energieverbrauchssensor) sein. Entfernte Computer oder Cluster von Computern können ein Datenzentrum umfassen, das unter Verwendung einer Hochgeschwindigkeits-Netzwerkverbindung mit dem Client verbunden ist. Die Übertragung von Daten aus dem Client zu einem entfernten Computer kann jedoch bei zeitempfindlichen Anwendungen, die strenge Anforderungen an den sofortigen Empfang von Ergebnissen von dem entfernten Computer stellen, eine inakzeptable Latenzzeit verursachen. Niedrige Latenzzeitanforderungen können sich zum Beispiel aus schnellen, aber gut informierten Entscheidungen ergeben, die von autonom fahrenden Fahrzeugen, Smart Homes, Bilderkennungstechnologien, Sprachschnittstellentechnologien, Videoüberwachung zur Erkennung von Bedrohungen, Cybersicherheit, Cloud-Dienste für mobile Geräte, Industriemaschinen oder für die Nutzung von Gesundheitsüberwachungssystemen benötigt werden.
  • In Datenzentren werden einige Operationen (z.B. Arbeitslasten) im Namen von Kunden unter Verwendung einer Beschleunigervorrichtung durchgeführt, die in der Lage ist, einen Satz von Operationen schneller als ein Allzweckprozessor durchzuführen und die Anforderungen (z.B. eine Ziellatenzzeit, eine Zielanzahl von Operationen pro Sekunde etc.) eines Service Level Agreements (SLA) mit dem Kunden zu erfüllen.
  • Figurenliste
    • 1 ist ein vereinfachtes Diagramm von zumindest einem Ausführungsbeispiel eines Datenzentrums 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 Datenzentrum umfasst sein kann.
    • 3 ist eine Perspektivansicht 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 Datenzentrum 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 Datenzentrum 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 Datenzentrum verwendbar ist.
    • 15 ist ein vereinfachtes Blockdiagramm eines Systems, das innerhalb des Datenzentrums etabliert sein kann.
    • 16 zeigt eine Umgebung mit mehreren Rechen-Racks.
    • 17 zeigt eine beispielhafte Umgebung.
    • 18A stellt beispielhaft ein Logikblockdiagramm eines Ausführungsbeispiels eines Abschnitts eines Systems dar.
    • 18B stellt ein beispielhaftes System dar.
    • 19A zeigt ein beispielhaftes System.
    • 19B zeigt ein Beispiel einer Vorrichtungs-Wechselwirkung.
    • 20 zeigt ein Beispiel eines Vorabruf-Flusses.
    • 21 zeigt ein Beispiel für ein Mehr-Leitungs-Fern-Vorabrufen, wobei Speicherleitungen von einem entfernten Knoten zu dem lokalen Knoten unter Verwendung eines einzelnen Struktur-Fern-Vorabrufens übertragen werden.
    • 22 stellt ein beispielhaftes Vorabruf-Cache-System dar.
    • 23 zeigt einen beispielhaften Prozess, der ausgeführt werden kann, wobei eine Netzwerkschnittstelle ein Vorabrufen von Inhalt anfragt.
    • 24 stellt einen beispielhaften Prozess dar.
    • 25 zeigt ein Szenario mit mehreren Speicherzugriffen.
    • 26A stellt einen Überblick eines Systems auf hoher Ebene dar.
    • 26B zeigt ein Beispiel von Vorrichtungen, die mit Reserve-Ressourcen für Vorabrufe und proaktive Vorabrufe kommunizieren.
    • 27 zeigt ein Beispiel eines Vorabrufens von Inhalt in den Blöcken A und B aus gepooltem Speicher.
    • 28 zeigt ein Beispiel einer proaktiven Vorabruf-Operation.
    • 29 stellt einen Prozess dar.
    • 30 stellt ein System dar.
  • Detaillierte Beschreibung
  • Eine kritische Herausforderung für die Performance und Flexibilität für In-Speicher-Rechen-Anwendungen, da ihre Datensätze exponentiell im Volumen wachsen, während ihre Zeit bis zum Ergebnis um das Hundertfache oder mehr schrumpfen soll. Unabhängig davon, wie komplex eine Anfrage und wie groß der Datensatz ist, über den sie ausgeführt werden muss, wird von vielen Anwendungen und Datenbanken heute routinemäßig erwartet, dass sie Ergebnisse nahezu in Echtzeit zu liefern. Angesichts der Spannung zwischen den vier nachfolgenden unterschiedlichen Aspekten ist dies eine erhebliche Anforderung.
  • Von Datenverarbeitungsoperationen, die früher Stunden oder Tage in Anspruch nahmen, wird nun erwartet, dass sie in wenigen Sekunden geliefert werden. Ein Ansatz, um dieses Kunststück zu vollbringen, ist heute die Verwendung von In-Speicher-Rechnen, bei dem Operationen so ablaufen können, als ob auf Daten mit Cache-Geschwindigkeit zugegriffen würde, und bei dem eine große Anzahl von zentralen Verarbeitungseinheiten (CPUs; central processing units) Daten dynamisch unterteilen können, um gemeinsam zu einem Ergebnis zu gelangen. Da sich das Datenwachstum mit einer erwarteten Rate von 40-60 Prozent weiter vergrößert, ist es nicht möglich, alle Daten in einer einzigen Speicherlage zu halten. Es ist auch nicht möglich, alle Daten in einer einzelnen Maschine aufzubewahren, selbst wenn eine Maschine über Speicher mit mehreren Terabyte durch eine mehrschichtige Organisation wie HBM-DDR-AEP und so weiter verfügt. Die Notwendigkeit von Scale-out-Anordnungen ergibt sich nicht allein aus dem Bedarf an Speicherkapazität, sondern präzipitiert auch aus dem Bedarf an mehr Rechenkapazität.
  • 1 zeigt ein Datenzentrum, in dem disaggregierte Ressourcen kooperativ eine oder mehrere Arbeitslasten (z.B. Anwendungen im Namen von Kunden) ausführen können, mehrere Pods 110, 120, 130, 140 umfassen, von denen jeder eine oder mehrere Reihen von Racks umfasst. Obwohl das Rechenzentrum 100 mit mehreren Pods dargestellt ist, kann das Datenzentrum 100 bei einigen Ausführungsbeispielen natürlich als ein einzelner Pod ausgeführt 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, Datenspeicherungsvorrichtungen, Beschleunigervorrichtungen, Allzweckprozessoren), d.h. Ressourcen, die logisch gekoppelt werden können, um einen zusammengesetzten Knoten zu bilden, der beispielsweise als ein Server agieren kann. Bei dem darstellenden 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 Pod routen) verbunden. Die Pod-Schalter verbinden wiederum mit Spine-Schaltern 150, die Kommunikationen unter Pods (z.B. den Pods 110, 120, 130, 140) in dem Datenzentrum 100 schalten. Bei einigen Ausführungsbeispielen können die Schlitten mit einer Struktur unter Verwendung von Intel OmniPath 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 Datenzentrum 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 die Ressourcen, die zu dem verwalteten Knoten gehören, auf demselben Schlitten positioniert sind. 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 zu einem verwalteten Knoten zugeordnet sein, während andere Ressourcen desselben Schlittens zu einem unterschiedlichen verwalteten Knoten (z. B. ein Prozessor ist einem verwalteten Knoten zugewiesen und ein anderer Prozessor desselben Schlittens ist einem unterschiedlichen verwalteten Knoten zugewiesen) zugeordnet sind.
  • Ein Datenzentrum, umfassend disaggregierte Ressourcen, wie z. B. das Datenzentrum 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 Mega-Rechenzentren von Cloud-Dienstanbietern, 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 einen einzigen Ressourcentyp (z. B. Rechenschlitten, die primär Rechenressourcen umfassen, Speicherschlitten, die primär Speicherressourcen umfassen), und das selektive Allokieren und De-Allokieren der disaggregierten Ressourcen, um einen verwalteten Knoten zu bilden, der zugewiesen ist, um eine Arbeitslast auszuführen, verbessert den Betrieb und die Ressourcennutzung des Datenzentrums 100 im Vergleich zu typischen Datenzentren, 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 überwiegend Ressourcen eines bestimmten Typs umfassen, können Ressourcen eines gegebenen Typs unabhängig von anderen Ressourcen upgegradet werden. Zusätzlich, da unterschiedliche Ressourcentypen (Prozessoren, Speicherung, Beschleuniger etc.) üblicherweise unterschiedliche Aktualisierungsraten aufweisen, können eine größere Ressourcennutzung und reduzierte Gesamtbetriebskosten erreicht werden. Beispielsweise kann ein Datenzentrumsbetreiber 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 vorgesehen 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 verwendet werden. Eine solche Nutzung kann es erlauben, dass mehr verwaltete Knoten in einem Datenzentrum mit einem gegebenen Satz von Ressourcen ausgeführt werden oder dass ein Datenzentrum, 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 den gehäusten Schlitten Leistung und Datenverbindungen bereitstellen, wie hierin detaillierter beschrieben ist. Bei dem darstellenden 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 Konnektivität zu anderen Pods in dem Datenzentrum 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 dem Pod 110 einen Redundanzbetrag bereit. Zum Beispiel, falls irgendeiner der Schalter 250, 260 ausfällt, können die Schlitten in dem Pod 110 immer noch eine Datenkommunikation mit dem Rest des Datenzentrums 100 (z.B. Schlitten anderer Pods) durch den anderen Schalter 250, 260 aufrechterhalten. Ferner können die Schalter 150, 250, 260 in dem darstellenden Ausführungsbeispiel als Dual-Modeoptische Schalter verkörpert sein, die sowohl in der Lage sind, Ethernet-Protokoll-Kommunikationen, die Internet-Protocol (IP) -Pakete tragen, als auch Kommunikationen gemäß einem zweiten, Hochperformance-Link-Layer-Protokoll (z. B. PCI Express) über 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 und Komponenten aufweisen können, die ähnlich sind wie der Pod 110, der Bezug nehmend auf 2 gezeigt und 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 unterschiedlich angeordnet sein als die in den 1-2 gezeigte Reihen-von-Racks-Konfiguration. Beispielsweise kann ein Pod als mehrere Sätze von Racks verkörpert sein, in denen jeder Satz von Racks radial angeordnet ist, d. h. die Racks sind äquidistant von einem mittleren Schalter.
  • Bezugnehmend nun auf 3-5 umfasst jedes darstellende Rack 240 des Datenzentrums 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 Datenzentrums 100 nach oben erstrecken, wenn sie eingesetzt werden. Das Rack 240 umfasst auch ein oder mehrere horizontale Paare 310 länglicher Stützarme 312 (in 3 über eine gestrichelte Ellipse identifiziert), die ausgebildet sind, um einen Schlitten des Datenzentrums 100 wie nachfolgend beschrieben zu stützten. Ein länglicher Stützarm 312 des Paares von länglichen Stützarmen 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 darstellenden Ausführungsbeispielen ist jeder Schlitten des Datenzentrums 100 als ein gehäuseloser Schlitten verkörpert. 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, um die gehäuselosen Schlitten zu empfangen. Beispielsweise definiert jedes Paar 310 länglicher Stützarme 312 einen Schlitten-Slot 320 des Racks 240, der ausgebildet ist, um einen entsprechenden gehäuselosen Schlitten zu empfangen. Zu diesem Zweck umfasst jeder darstellende, längliche Stützarm 312 eine Schaltungsplatinenführung 330, die ausgebildet ist, um 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 angebracht. Zum Beispiel, bei dem darstellenden Ausführungsbeispiel ist jede Schaltungsplatinenführung 330 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 sich möglicherweise nicht in jeder Figur auf jede Schaltungsplatinenführung 330 bezogen.
  • Jede Schaltungsplatinenführung 330 umfasst eine innere Wand, die einen Schaltungsplatinen-Slot 380 definiert, der ausgebildet ist, um das gehäuselose Schaltungsplatinensubstrat eines Schlittens 400 zu empfangen, wenn der Schlitten 400 in dem entsprechenden Schlitten-Slot 320 des Racks 240 empfangen wird. Dazu richtet, wie in 4 gezeigt ist, ein Benutzer (oder Roboter) das gehäuselose Schaltungsplatinensubstrat eines darstellenden gehäuselosen Schlittens 400 zu einem Schlitten-Slot 320 aus. Der Benutzer oder Roboter kann dann das gehäuselose Schaltungsplatinensubstrat vorwärts in den Schlitten-Slot 320 schieben, so dass jeder Seitenrand 414 des gehäuselosen Schaltungsplatinesubstrats in einem entsprechenden Schaltungsplatinen-Slot 380 der Schaltungsplatinenführungen 330 des Paares 310 länglicher Stützarme 312 empfangen wird, die den entsprechenden Schlitten-Slot 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 Datenzentrum 100 bei einigen Ausführungsbeispielen ohne menschliche Beteiligung vor Ort in dem Datenzentrum arbeiten (z.B. Ausführen von Arbeitslasten, Durchführen von Wartung und/oder Upgrades, etc.). Bei anderen Ausführungsbeispielen kann ein Mensch eine oder mehrere Wartungs- oder Upgrade-Operationen in dem Datenzentrum 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-Slot 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 dazugefügt werden, um das Rack 240 in eine Zwei-Rack-Lösung umzubauen, die doppelt so viele Schlitten-Slots 320 halten kann, wie in 3 gezeigt ist. Das darstellende Rack 240 umfasst sieben Paare 310 länglicher Stützarme 312, die entsprechende sieben Schlitten-Slots 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 (d.h. zusätzliche oder weniger Schlitten-Slots 320) umfassen. Es wird darauf hingewiesen, dass, da der Schlitten 400 gehäuselos ist, der Schlitten 400 eine Gesamthöhe aufweisen kann, die unterschiedlich ist als typische Server. Somit kann bei einigen Ausführungsbeispielen die Höhe jedes Schlitten-Slots 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-Slots 320 die Gesamthöhe des Racks 240 bei einigen Ausführungsbeispielen niedriger sein als die Höhe traditioneller Rack-Einhäusungen. Zum Beispiel, bei einigen Ausführungsbeispielen kann 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 Dimensionen 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üfterArray 370) zum Kühlen jedes Schlittens, was es wiederum erlauben kann, dass die physischen Ressourcen bei höheren 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 geöffnet ist. Natürlich kann in einigen Fällen eine Endplatte an einem der länglichen Stützpfosten 302, 304 angebracht sein, in diesen Situationen, in denen das Rack 240 ein Ende-der-Reihe-Rack in dem Datenzentrum 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 Verbindungen positioniert sein 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 jedem Schlitten-Slot 320 Kommunikationsverbindungen bereitzustellen, Leistungsverbindungen, um jedem Schlitten-Slot 320 Leistung bereitzustellen, und/oder andere Arten von Verbindungen.
  • Das Rack 240, bei dem darstellenden Ausführungsbeispiel, umfasst eine Stützplattform, auf der ein entsprechender optischer Datenverbinder (nicht gezeigt) befestigt ist. Jeder optische Datenverbinder ist einem entsprechenden Schlitten-Slot 320 zugeordnet und ist ausgebildet, um mit einem optischen Datenverbinder eines entsprechenden Schlittens 400 zusammenzupassen, wenn der Schlitten 400 in dem entsprechenden Schlitten-Slot 320 empfangen wird. Bei einigen Ausführungsbeispielen werden optische Verbindungen zwischen Komponenten (z.B. Schlitten, Racks und Schalter) in dem Datenzentrum 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 aufgeschoben, 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 innerhalb des Verbindermechanismus.
  • Das darstellende Rack 240 umfasst auch ein Lüfterarray 370, das mit den Quer-Stützarmen des Racks 240 gekoppelt ist. Das Lüfterarray 370 umfasst eine oder mehrere Reihen von kühlenden Lüftern 372, die in einer horizontalen Linie zwischen den länglichen Stützpfosten 302, 304 ausgerichtet sind. Bei dem darstellenden Ausführungsbeispiel umfasst das Lüfterarray 370 eine Reihe von kühlenden Lüftern 372 für jeden Schlitten-Slot 320 des Racks 240. Wie vorangehend erörtert wurde, umfasst jeder Schlitten 400 bei dem darstellenden Ausführungsbeispiel nicht irgendein eingebautes Kühlsystem, und somit stellt das Lüfterarray 370 für jeden in dem Rack 240 empfangenen Schlitten 400 Kühlung bereit. Jedes Rack 240 umfasst bei dem darstellenden Ausführungsbeispiel auch eine Leistungsversorgung, die jedem Schlitten-Slot 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-Slot 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 befestigt ist. Jede Leistungsversorgung umfasst einen Leistungsverbinder, der ausgebildet ist, um mit einem Leistungsverbinder des Schlittens 400 zusammenzupassen, wenn der Schlitten 400 in dem entsprechenden Schlitten-Slot 320 empfangen wird. Bei dem darstellenden 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, um 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 einem Rechenschlitten Leistung bereitstellt, Leistungspegel bereitstellen, die sich von den Leistungspegeln unterscheiden, die durch eine zweite Leistungsversorgung geliefert werden, die einem Beschleunigerschlitten Leistung bereitstellt. Die Leistungsversorgungen können auf 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.
  • Bezugnehmend nun auf 6 ist der Schlitten 400 bei dem darstellenden Ausführungsbeispiel ausgebildet, um in einem entsprechenden Rack 240 des Datenzentrums 100 befestigt zu werden, wie vorangehend erörtert wurde. Bei einigen Ausführungsbeispielen kann jeder Schlitten 400 für ein Ausführen bestimmter Aufgaben, wie beispielsweise Rechenaufgaben, Beschleunigungsaufgaben, Datenspeicherungsaufgaben etc. optimiert oder anderweitig ausgebildet sein. Zum Beispiel kann der Schlitten 400 verkörpert sein als ein Rechenschlitten 800, wie nachfolgend Bezug nehmend auf 8-9 erörtert ist, als ein Beschleunigerschlitten 1000, wie nachfolgend Bezug nehmend auf 10-11 erörtert ist, als ein Speicherungsschlitten (storage sied) 1200, wie nachfolgend Bezug nehmend auf 12-13 erörtert ist, oder als ein Schlitten, der optimiert oder anderweitig ausgebildet ist, um andere spezialisierte Aufgaben auszuführen, wie beispielsweise ein Speicherschlitten (memory sled) 1400, wie nachfolgend Bezug nehmend auf 14 erörtert ist.
  • Wie vorangehend erörtert wurde, umfasst der darstellende 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 für die lokale Umgebung. 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 darstellenden 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, umfasst das gehäuselose Schaltungsplatinensubstrat 602 mehrere Merkmale, 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 diese Strukturen reduziert, die einen Luftstrom behindern können. Zum Beispiel, da das gehäuselose Schaltungsplatinensubstrat 602 nicht in einem einzelnen Gehäuse oder einer 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 behindern könnte. Zusätzlich weist das gehäuselose Schaltungsplatinensubstrat 602 eine geometrische Form auf, die ausgebildet ist, um die Länge des Luftstrompfades über die elektrischen Komponenten, die auf dem gehäuselosen Schaltungsplatinensubstrat 602 befestigt sind, zu reduzieren. Beispielsweise weist das darstellende 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, zum Beispiel, weist 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, so 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 (d.h. 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 zu dem hinteren Rand 612 des gehäuselosen Schaltungsplatinensubstrats 602 erstreckt) befestigt.
  • Wie vorangehend erörtert wurde, umfasst der darstellende 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 ausgeführt 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, dem Typ 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 ausgeführt ist als ein Rechenschlitten, als Beschleuniger-Co-Prozessoren oder Schaltungen bei Ausführungsbeispielen, bei denen der Schlitten 400 ausgeführt ist als ein Beschleunigerschlitten, Speicherungssteuerungen bei Ausführungsbeispielen, bei denen der Schlitten 400 ausgeführt ist als ein Speicherungsschlitten, 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 darstellenden 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 dem Typ und der 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 über 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-/Ausgabeoperationen zu ermöglichen, ausgeführt sein oder diese anderweitig umfassen. Bei dem darstellenden Ausführungsbeispiel ist das I/O-Teilsystem 622 als ein Doppeldatenrate-4 (DDR4; double data rate 4) -Datenbus oder als ein DDR5-Datenbus verkörpert 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 verkörpert sein, die in der Lage ist, Ressource-zu-Ressource-Kommunikationen zu ermöglichen. Bei dem darstellenden 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) verkörpert. 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 verkörpert sein, die für Ressource-zu-Ressource-Kommunikationen dediziert ist.
  • Der Schlitten 400 umfasst auch einen Leistungsverbinder 640, der ausgebildet ist, um 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 über 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 (d.h. eine eingebaute Leistungsversorgung), um den elektrischen Komponenten des Schlittens 400 Leistung bereitzustellen. Der Ausschluss einer lokalen oder eingebauten Leistungsversorgung ermöglicht die Reduzierung der Gesamtgrundfläche des gehäuselosen Schaltungsplatinensubstrats 602, was die thermischen kühlenden Charakteristika 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 Spannungsregler auf einer Unterseite 750 (siehe 7) des gehäuselosen Schaltungsplatinensubstrats 602 direkt gegenüber den Prozessoren 820 (siehe 8) platziert, und Leistung wird von den Spannungsreglern zu den Prozessoren 820 durch Vias geroutet, die sich durch das Schaltungsplatinensubstrat 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, um mit einem befestigenden Arm 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 verkörpert sein, die es dem Roboter erlauben, den Schlitten 400 zu greifen, 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, verkörpert sein. Bei anderen Ausführungsbeispielen können die Befestigungsmerkmale als Klammern, Spangen oder ähnliche Strukturen, die an dem gehäuselosen Schaltungsplatinensubstrat 602 angebracht sind, verkörpert sein. Die bestimmte Anzahl, Form, Größe und/oder Zusammensetzung des Befestigungsmerkmals 642 kann von dem Entwurf des Roboters abhängen, der ausgebildet ist, um 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 verkörpert. Die physischen Ressourcen 620 sind mit den Speichervorrichtungen 720 über 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 verkörpert 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 Typen von Direktzugriffsspeicher (RAM; random access memory) umfassen, wie beispielsweise dynamischen Direktzugriffsspeicher (DRAM) oder statischen Direktzugriffsspeicher (SRAM; static random access memory). Ein bestimmter Typ von DRAM, der in einem Speichermodul verwendet werden kann, ist 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 für 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 diese, 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; spin transfer torque) 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 einem anderen Speicher verwenden. Die Speichervorrichtung kann sich auf den Die selbst und/oder auf ein gepackagtes 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 Bulkwiderstands basiert.
  • Bezugnehmend nun auf 8 kann der Schlitten 400 bei einigen Ausführungsbeispielen als ein Rechenschlitten 800 verkörpert sein. Der Rechenschlitten 800 ist optimiert, oder anderweitig ausgebildet, um Rechenaufgaben durchzufü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 durchzufü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 für die entsprechenden Komponenten des Rechenschlittens 800 und wird hierin der Klarheit der Beschreibung des Rechenschlittens 800 halber nicht wiederholt.
  • Bei dem darstellenden Rechenschlitten 800 sind die physischen Ressourcen 620 als Prozessoren 820 verkörpert. 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 verkörpert und können ausgebildet sein, um 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, ermöglichen die vorangehend erörterten verbesserten thermischen Kühlcharakteristika des gehäuselosen Schaltungsplatinensubstrats 602 den Betrieb mit höherer Leistung. Zum Beispiel sind bei dem darstellenden Ausführungsbeispiel die Prozessoren 820 ausgebildet, um mit einer Nennleistung von zumindest 250 W zu arbeiten. Bei einigen Ausführungsbeispielen können die Prozessoren 820 ausgebildet sein, um mit 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 verkörpert sein, die in der Lage ist, Prozessor-zu Prozessor-Verbindungs 842 -Kommunikationen zu ermöglichen. Bei dem darstellenden 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) verkörpert. 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 darstellende Kommunikationsschaltung 830 umfasst eine Netzwerkschnittstellensteuerung (NIC) 832, die auch als eine Host-Fabric-Schnittstelle (HIF; 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 genutzt werden können, um sich mit anderen Rechenvorrichtungen (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; system-on-a-chip), das einen oder mehrere Prozessoren umfasst, verkörpert 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.
  • Die Kommunikationsschaltung 830 ist kommunikativ mit einem optischen Datenverbinder 834 gekoppelt. Der optische Datenverbinder 834 ist ausgebildet, um 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, um eingehende optische Signale von dem rackseitigen optischen Datenverbinder in elektrische Signale umzuwandeln und um elektrische Signale in ausgehende optische Signale zu dem rackseitigen optischen Datenverbinder umzuwandeln. Obwohl der optische Sendeempfänger 836 in dem darstellenden 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, um mit einem entsprechenden Verbinder eines gehäuselosen Erweiterungsschaltungsplatinensubstrats zusammenzupassen, um dem Rechenschlitten 800 zusätzliche physische Ressourcen bereitzustellen. Die zusätzlichen physischen Ressourcen können, zum Beispiel, durch die Prozessoren 820 während eines Betriebs des Rechenschlittens 800 genutzt 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.
  • Bezugnehmend nun auf 9 ist ein darstellendes 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 durch Löten oder ähnliche 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 darstellenden 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 über 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 verbunden ist, können die Speichervorrichtungen 720 und die Prozessoren 820 durch eines 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 ermöglicht, 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ühlende Lüfter, die daran angebracht sind. Das heißt, jede der Wärmesenken 850 ist als eine lüfterlose Wärmesenke verkörpert. 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.
  • Bezugnehmend nun auf 10 kann der Schlitten 400 bei einigen Ausführungsbeispielen als ein Beschleunigerschlitten 1000 verkörpert sein. Der Beschleunigerschlitten 1000 ist ausgebildet, um 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 abgeben. 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 darstellenden Beschleunigerschlitten 1000 sind die physischen Ressourcen 620 als Beschleunigerschaltungen 1020 verkörpert. Obwohl 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. Zum Beispiel, wie in 11 gezeigt ist, kann 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, verkörpert sein. Zum Beispiel können die Beschleunigerschaltungen 1020 beispielsweise als zentrale Verarbeitungseinheiten, feldprogrammierbare Gate-Arrays (FPGA), anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Steuerungslogik (PCL; programmable control logic), Sicherheits-Co-Prozessoren, Grafikverarbeitungseinheiten (GPUs), neuromorphe Prozessoreinheiten, Quantencomputer, Maschinelles-Lernen-Schaltungen oder andere spezialisierte Prozessoren, Steuerungen, Vorrichtungen und/oder Schaltungen verkörpert 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 verkörpert sein, die in der Lage ist, Beschleuniger-zu-Beschleuniger-Kommunikationen zu ermöglichen. Bei dem darstellenden 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) verkörpert. 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 verkörpert 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.
  • Bezugnehmend nun auf 11 ist ein darstellendes 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 über 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 auf der Unterseite 750 des gehäuselosen Schaltungsplatinensubstrats 602 anstatt auf der Oberseite 650 positioniert sind.
  • Bezugnehmend nun auf 12 kann der Schlitten 400 bei einigen Ausführungsbeispielen als ein Speicherungsschlitten 1200 verkörpert sein. Der Speicherungsschlitten 1200 ist ausgebildet, um 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 darstellenden Speicherungsschlitten 1200 sind die physischen Ressourcen 620 als Speicherungssteuerungen 1220 verkörpert. Obwohl 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 verkörpert sein, die in der Lage ist, die Speicherung und den Abruf von Daten in die Datenspeicherung 1250 basierend auf Anfragen, die über die Kommunikationsschaltung 830 empfangen werden, zu steuern. Bei dem darstellenden Ausführungsbeispiel sind die Speicherungssteuerungen 1220 als relative Niedrig-Leistungs-Prozessoren oder -Steuerungen verkörpert. Zum Beispiel können bei einigen Ausführungsbeispielen die Speicherungssteuerungen 1220 ausgebildet sein, um 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 verkörpert sein, die in der Lage ist, Steuerung-zu-Steuerung-Kommunikationen zu ermöglichen. Bei dem darstellenden 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) verkörpert. 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 verkörpert sein, die für Prozessor-zu-Prozessor-Kommunikationen dediziert ist.
  • Bezugnehmend nun auf 13 ist ein darstellendes Ausführungsbeispiel des Speicherungsschlittens 1200 gezeigt. Bei dem darstellenden Ausführungsbeispiel ist die Datenspeicherung 1250 als ein Speicherungskäfig 1252 ausgeführt, der ausgebildet ist, um eines oder mehrere Solid-State-Laufwerke (SSDs; solid state drives) 1254 zu häusen, oder umfasst diesen anderweitig. Zu diesem Zweck umfasst der Speicherungskäfig 1252 eine Anzahl von Befestigungsslots 1256, die jeweils ausgebildet sind, um ein entsprechendes Solid-State-Laufwerk 1254 zu empfangen. Jeder der Befestigungsslots 1256 umfasst eine Anzahl von Laufwerkführungen 1258, die zusammenwirken, um eine Zugriffsöffnung 1260 des entsprechenden Befestigungsslots 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. über einen Roboter) ausgelagert werden, während der Speicherungsschlitten 1200 in dem entsprechenden Rack 240 befestigt bleibt.
  • Der Speicherungsschlitten 1252 umfasst darstellenderweise sechzehn Befestigungsslots 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, um zusätzliche oder weniger Solid-State-Laufwerke 1254 zu lagern. Zusätzlich sind bei dem darstellenden 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 verkörpert 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 auf 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 über das I/O-Teilsystem 622 kommunikativ mit den Speicherungssteuerungen 1220 gekoppelt, die auf der Oberseite 650 positioniert sind. Da das gehäuselose Schaltungsplatinensubstrat 602 als eine doppelseitige Schaltungsplatine verkörpert 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, umfassen aufgrund der verbesserten thermischen Kühlcharakteristika des gehäuselosen Schaltungsplatinensubstrats 602 des Speicherungsschlittens 1200 keine der Wärmesenken 1270 kühlende Lüfter, die daran angebracht sind. Das heißt, jede der Wärmesenken 1270 ist als eine lüfterlose Wärmesenke verkörpert.
  • Bezugnehmend nun auf 14 kann der Schlitten 400 bei einigen Ausführungsbeispielen als ein Speicherschlitten 1400 verkörpert sein. Der Speicherungsschlitten 1400 ist optimiert, oder anderweitig ausgebildet, um anderen 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 diesen 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 für die entsprechenden Komponenten des Speicherschlittens 1400 und wird hierin der Klarheit der Beschreibung des Speicherschlittens 1400 halber nicht wiederholt.
  • Bei dem darstellenden Speicherschlitten 1400 sind die physischen Ressourcen 620 als Speichersteuerungen 1420 verkörpert. Obwohl 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 verkörpert sein, die in der Lage ist, das Schreiben und Ablesen von Daten in die Speichersätze 1430, 1432 basierend auf Anfragen, die über die Kommunikationsschaltung 830 empfangen werden, zu steuern. Bei dem darstellenden 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. Ablesen, Schreiben etc.) durchzusetzen, die dem Schlitten 400 zugeordnet sind, der eine Anforderung an den Speicherschlitten 1400 gesendet hat, um eine Speicherzugriffsoperation (z.B. Ablesen oder Schreiben) durchzufü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 verkörpert sein, die in der Lage ist, Steuerung-zu-Steuerung-Kommunikationen zu ermöglichen. Bei dem darstellenden 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) verkörpert. 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 verkörpert 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 (z.B. eine Speicheradresse ist auf den Speichersatz 1430 abgebildet, die nächste Speicheradresse auf den Speichersatz 1432 abgebildet und die dritte Adresse ist auf den Speichersatz 1430 abgebildet, etc.) implementieren. 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 Latenzzeit, die einem Durchfü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 darstellenden 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 darstellenden Ausführungsbeispiel ist entweder 16 Ghz oder 32 Ghz. Bei anderen Ausführungsbeispielen können die Frequenzen unterschiedlich sein. Ein Verwenden eines Wellenleiters kann Zugriff mit hohem Durchsatzverhalten 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.
  • Bezugnehmend nun auf 15 kann ein System zum Ausführen einer oder mehrerer Arbeitslasten (z.B. Anwendungen) gemäß dem Datenzentrum 100 implementiert sein. Bei dem darstellenden Ausführungsbeispiel umfasst das System 1510 einen Orchestrator-Server 1520, der als ein verwalteter Knoten verkörpert 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. Einer 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) durchzufü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 darstellenden Ausführungsbeispiel kann der Orchestrator-Server 1520 selektiv physische Ressourcen 620 von den Schlitten 400 allokieren und/oder de-allokieren 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-Durchsatzverhalten, eine Ziellatenzzeit, 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, Latenzzeit, 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 eine oder mehrere physische Ressourcen von dem verwalteten Knoten 1570 de-allokiert werden können, 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 durchzuführen) freigegeben werden. Alternativ, wenn die QoS-Ziele derzeit nicht erfüllt sind, kann der Orchestrator-Server 1520 bestimmen, zusätzliche physische Ressourcen dynamisch zu allokieren, 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, physische Ressourcen von einem verwalteten Knoten dynamisch zu de-allokieren, wenn der Orchestrator-Server 1520 bestimmt, dass ein De-Allokieren 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 Phasen einer Ausführung (z.B. Zeitperioden, in denen unterschiedliche Operationen, wobei jede unterschiedliche Ressourcennutzungscharakteristika aufweist, durchgeführt werden) der Arbeitslast (z. B. der Anwendung 1532) und durch vorausschauendes Identifizieren verfügbarer Ressourcen in dem Datenzentrum 100 und ein Allokieren 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 Latenzzeiten und einem Verteilungsschema modellieren, um Arbeitslasten unter Rechenschlitten und anderen Ressourcen (z.B. Beschleunigerschlitten, Speicherschlitten, Speicherungsschlitten) in dem Datenzentrum 100 zu verteilen. Der Orchestrator-Server 1520 kann beispielsweise ein Modell verwenden, das die Performance von Ressourcen auf dem Schlitten 400 (z.B. FPGA-Performance, Speicherzugrifflatenzzeit, etc.) und die Performance (z.B. Überlastung, Latenzzeit, Bandbreite) des Pfads durch das Netzwerk zu der Ressource (z.B. FPGA) berücksichtigt. Somit kann der Orchestrator-Server 1520 basierend auf der Gesamtlatenzzeit, die jeder potenziellen Ressource, die in dem Datenzentrum 100 (z.B. die Latenzzeit, die der Performance der Ressource selbst zugeordnet ist, zusätzlich zu der Latenzzeit, 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, bestimmen, welche Ressource(n) mit welchen Arbeitslasten verwendet werden sollten.
  • Bei einigen Ausführungsbeispielen kann der Orchestrator-Server 1520 eine Karte von Wärmeerzeugung in dem Datenzentrum 100 erstellen, unter Verwendung von Telemetriedaten (z.B. Temperaturen, Lüftergeschwindigkeiten, etc.), die von den Schlitten 400 gemeldet werden, und verwalteten Knoten als eine Funktion der Karte von Wärmeerzeugung und vorhergesagter Wärmeerzeugung, die unterschiedlichen Arbeitslasten zugeordnet ist, Ressourcen zuweisen, um eine Zieltemperatur und Wärmeverteilung in dem Datenzentrum 100 zu erhalten. 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 Datenzentrums 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 durch die 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 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 Datenzentrum 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 die 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 Allokation von Ressourcen zu verwalteten Knoten nutzen kann.
  • 16 stellt eine Umgebung 1600 dar, umfassend mehrere Rechen-Racks 1602, von denen jeder einen Top of Rack- (ToR) Schalter 1604, einen Pod-Verwalter 1606 und eine Mehrzahl von gepoolten Systemschubladen umfasst. Im Allgemeinen können die gepoolten Systemschubläden gepoolte Rechenschubläden und gepoolte Speicherungsschubladen umfassen. Optional können die gepoolten Systemschubladen auch gepoolte Speicherschubladen und gepoolte Eingabe-/Ausgabe-(I/O)-Schubladen umfassen. Bei dem dargestellten Ausführungsbeispiel umfassen die gepoolten Systemschubladen eine Intel® XEON® gepoolte Computerschublade 1608 und eine Intel® ATOM™ gepoolte Rechenschublade 1610, eine gepoolte Speicherungsschublade 1612, eine gepoolte Speicherschublade 1614 und eine gepoolte I/O-Schublade 1616. Jede der gepoolten Systemschubladen ist über eine Hochgeschwindigkeitsverbindung 1618 mit dem ToR-Schalter 1604 verbunden, wie z. B. ein 40-Gigabit/Sekunde (Gb/s)- oder 100Gb/s-Ethernet-Link oder einen optischen Link mit 100+ Gb/s-Silizium-Photonik (SiPh). Bei einem Ausführungsbeispiel umfasst eine Hochgeschwindigkeitsverbindung 1618 einen 800 Gb/s SiPh optischen Link.
  • Mehrere der Rechen-Racks 1600 können über ihre ToR-Schalter 1604 miteinander verbunden sein (z. B. an einen Pod-Ebene-Schalter oder einem Datenzentrum-Schalter), wie die Verbindungen zu einem Netzwerk 1620 darstellen. Bei einigen Ausführungsbeispielen werden Gruppen von Rechen-Racks 1602 als separate Pods über (einen) Pod-Verwalter 1606 verwaltet. Bei einem Ausführungsbeispiel wird ein einzelner Pod-Verwalter verwendet, um alle Racks in dem Pod zu verwalten. Alternativ können verteilte Pod-Verwalter für Pod-Verwaltungs-Operationen verwendet werden.
  • Eine Umgebung 1600 umfasst ferner eine Verwaltungsschnittstelle 1622, die zur Verwaltung verschiedener Aspekte der Umgebung verwendet wird. Dies umfasst die Verwaltung einer Rack-Konfiguration, mit entsprechenden Parametern gespeichert als Rack-Konfigurationsdaten 1624.
  • 17 zeigt eine beispielhafte Umgebung. Beispielsweise kann eine Rechenplattform 1700 eine Netzwerkschnittstelle (NIC) 1702 verwenden, um mit zumindest einem oder mehreren aus einem Speicherungsknoten, Speicherpool, Beschleunigern, Datenzentren (nicht abgebildet), Servern (nicht abgebildet), Client-Vorrichtungen (nicht abgebildet) oder irgendeiner Vorrichtung zu kommunizieren. NIC 1702 stellt einen Zugriff auf das Netzwerk 1704 bereit. Das Netzwerk 1704 kann irgendeine Art von Struktur, verdrahtetes oder drahtloses Netzwerk, Satellitennetzwerk, Bus oder Verbindung umfassen. Das Netzwerk 1704 kann zumindest kompatibel sein mit Ethernet, 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, CCIX und so weiter. Inhalt kann in einem Ethernet-Rahmen oder in Kommunikationen bereitgestellt werden, die mit InfiniBand, Internet Wide Area RDMA Protocol (iWARP), quick UDP Internet Connections (QUIC), RDMA over Converged Ethernet (RoCE) oder anderen kompatibel sind und zur Speicherung an eine lokale oder entfernte Vorrichtung unter Verwendung des Netzwerks 1704 übertragen werden. Daten und Logs können unter Verwendung eines Protokolls wie beispielsweise NVMe over Fabrics (NVMe-oF) auf virtualisierten Speicherungsknoten gespeichert werden.
  • Die Rechenplattform 1700 kann irgendeine Art von Rechenvorrichtung (z.B. CPU, FPGA, ASIC, GPU usw.) umfassen und kann mehrere Speicherlagen (z.B. L1, L2, LLC, DDR, HBM, dauerhaften Speicher, 2-Level-Speicher (2LM) usw.) umfassen. Mehrere Speicherlagen können mit Datenbewegungen oder dem Kopieren zwischen Speichern zusammenhängend sein.
  • 18A stellt ein beispielhaftes Logikblockdiagramm eines Ausführungsbeispiels eines Abschnitts eines Systems dar. Das System 1800 umfasst eine Mehrzahl von lokalen Knoten 1802 und 1803 und eine Mehrzahl von entfernten Knoten (z. B. 1806 und 1808), die durch die Netzwerkschnittstellen-Steuerungen 1814A, 1814B, 1814C und 1814D und einen Schalter 1804 kommunikativ gekoppelt sind. Eine oder mehrere der Komponenten des Systems 1800 bei einem oder mehreren Ausführungsbeispielen können Teil eines Unternehmensdatenzentrums sein oder kommunikativ mit diesem gekoppelt sein. Der Schalter 1804 kann bei einem oder mehreren Ausführungsbeispielen eine NIC 1814 umfassen, die bei der Verbindung des Schalters 1804 mit einer bestimmten Spur helfen kann, die mit einem Endknoten verbindet. Der Schalter 1804 kann einer aus einer Mehrzahl von Schaltern sein.
  • Das System 1800 umfasst Rechenknoten (z.B. den Knoten 1802A) und gepoolte Ressourceknoten (z.B. den entfernten Speicher, wie er Teil der Teilknoten 1808A, 1808B und 1808C sein kann und/oder den Knoten 1808). Der entfernte Speicher 1820 und 1822 und/oder die Teilknoten 1808A-C können den Knoten 1802A-B zusätzlichen Speicher bereitstellen. Der entfernte Speicher 1820 und 1822 und/oder die Teilknoten können den Knoten 1802, 1803 lokal ausgesetzt werden, wie beispielsweise durch ein Softwareprotokoll (z.B. ein verteiltes Dateisystem, eine Objektkarte oder ähnliches) oder ein Protokoll wie NVMe oder NVMe-oF.
  • Jeder der Knoten 1802, 1808 ist so dargestellt, dass er eine Mehrzahl von Hardware-Prozessoren 1810A und 1810B umfasst, die über einen Link 1812 und die NIC 1814A kommunikativ verbunden sind. Jede der NICs 1814A-D ist durch den Schalter 1804 kommunikativ gekoppelt.
  • Ein Caching-Agent kann ein Kohärenzagent in einem Knoten sein, der Speicheranfragen von den Kernen innerhalb desselben Knotens verarbeitet. Ein Home Agent (HA; Heimatagent) kann ein Knoten (z. B. ein Knoten-Cluster) sein, der für die Verarbeitung einer Speicheranfrage von einem Caching-Agent verantwortlich ist und als Heimat für einen Teil des Speicheradressraums fungiert (es wird darauf hingewiesen, dass ein Die (z. B. ein Prozessor) in einer verteilten Adressraumabbildung mehrere Heimatstationen haben kann). Abhängig von dem Adressraum, auf den eine Anfrage abzielt, kann eine Anfrage zu dem lokalen Speicher desselben Knotens gehen. Zusätzlich oder alternativ kann eine Speicheranfrage an eine Schnittstelle (z. B. eine Quick Path Interconnect (QPI), PCIe oder andere) gehen, um die Anfrage durch die NIC an die anderen Prozessoren innerhalb derselben kohärenten Domäne oder an Prozessoren außerhalb der kohärenten Domäne zu routen. Eine NIC kann als eine Host-Fabric-Schnittstelle oder als Struktur-Schnittstelle arbeiten. Prozessoren, die auf einer Seite der Schnittstelle verbunden sind, können zur gleichen kohärenten Domäne gehören. Somit können die Knoten 1802 und 1803 Teil derselben kohärenten Domäne sein und der Knoten 1803 kann lokalen Speicher für den Knoten 1802 bereitstellen.
  • Ein System kann eine oder mehrere kohärente Domänen umfassen, die durch eine Struktur-Verbindung miteinander verbunden sind (z.B. eine oder mehrere auf einem Struktur-Link, einem Struktur-Speichertunnel und einem Schalter). Beispielsweise können Hoch-Performance-Rechnen (HPC; high performance computing) oder Datenzentren N Cluster oder Server umfassen, die unter Verwendung der Struktur-Verbindung miteinander kommunizieren können. Unter Verwendung der Struktur-Verbindung kann jede kohärente Domäne zumindest einige Adressregionen anderen kohärenten Domänen aussetzen. Zugriffe zwischen unterschiedlichen kohärenten Domänen sind jedoch nicht kohärent, wie sie beispielsweise heterogene Zugriffslatenzzeiten umfassen können. Ausführungsbeispiele hierin erlauben eine Reduzierung der Zugriffslatenzzeiten, wie beispielsweise durch den Vorabrufer an der NIC 1814A-D.
  • Eine Speicheranfrage kann wie folgt ablaufen: (1) ein Knoten erzeugt eine Speicheranfrage (z.B, eine Speicher-Ablese- oder eine Speicher-Schreib-Anfrage); (2) die Speicheranfrage wird einem Caching-Agenten (CA), wie z.B. einem CA auf Prozessor- oder Knotenebene, bereitgestellt; (3) der CA verwendet einen Systemadressendecodierer (SAD; system address decoder), um zu decodieren, dass die Speicheranfrage auf einen Speicherort in einem spezifischen Speicher abzielt oder referenziert ist; (4) der SAD kann die Adresse des Speichers zurückgeben, auf den die Anfrage referenziert; und (5) die Speicheranfrage wird an eine Speichersteuerung des Speichers, auf den die Anfrage referenziert ist, weitergeleitet, so dass die Speicheranfrage erfüllt werden kann. Die Erfüllung der Anfrage kann mehr oder weniger Zeit in Anspruch nehmen, abhängig von der Art des Speichers, auf den zugegriffen wird, ob es sich um einen entfernten oder lokalen Speicher handelt, und/oder von der Bandbreite einer Vorrichtung zwischen dem anfordernden Knoten und dem Knoten, auf den die Anfrage referenziert ist.
  • Die Knoten 1802 und 1803 routen jede ihrer entfernten Speicheranfragen durch die entsprechenden NICs 1814A und 1814B. Gemäß einigen Ausführungsbeispielen können NIC 1814A oder 1814B ein Vorabrufen-Schema implementieren, wie es z.B. durch den Vorabrufer der NIC 1814A implementiert werden kann.
  • Der Schalter 1804 bestimmt eine Knotenidentifikation, die der Speicheradresse entspricht, die Gegenstand der Anfrage ist (z.B. ansprechend auf die Detektion, dass keine oder eine bestimmte Zielidentifikation spezifiziert ist). Der Schalter 1804 erzeugt dann eine weitere Anfrage (mit der richtigen Knotenidentifikation) und leitet die Anfrage an den Knoten weiter, der die entsprechende Adresse umfasst. Die angeforderten Daten (bei einer Holen-Anfrage) oder eine Bestätigung (ACK; acknowledgement) (bei einer Ablegen-Anfrage) können dann zurück an den Knoten geroutet werden, der die Anfrage initiiert hat, wie beispielsweise durch eine oder mehrere Netzwerkschnittstellen-Steuerungen und/oder einen oder mehrere Schalter). Im Falle einer fehlgeschlagenen Holen- oder Ablegen-Anfrage kann eine Nicht- oder Negative-Bestätigung (NACK; not or negative acknowledge) oder ein Fehlerpaket erzeugt werden.
  • Eine Speichersteuerung kann eine Hardware-, Software- und/oder Firmware-Komponente sein, die Transaktionen mit dem Speicher initiieren kann. Ein CA kann eine oder mehrere Kopien in einer CA-eigenen Cache-Struktur beibehalten. Ein Caching-Agent kann eine oder mehrere Kopien des kohärenten Speicherinhalts anderen Caching-Agenten oder anderen Komponenten, wie z.B. NICs, Schaltern, Routern oder ähnlichem, bereitstellen. Um eine Speicheranfrage auszuführen, sendet ein Kern (z.B. ein Prozessor) eine Anfrage an einen Caching-Agenten. Der Caching-Agent bestimmt, ob der der angeforderten Adresse zugeordnete Inhalt in seiner LLC gespeichert wird. Wenn die angefragte Adresse nicht in der LLC gecachet wird, sendet der Caching-Agent die Anfrage an: (1) die lokale Speichersteuerung, wenn die Leitung in dem Speicher der lokalen Buchse (der Knoten, zu dem der Prozessor gehört) referenziert (gespeichert) ist, und/oder (2) die NIC, wenn die Anforderung im Speicher eines entfernten Knotens referenziert (gespeichert) ist.
  • Der entfernte Knoten, der die Speicheranfrage empfängt, leitet die Anfrage an die Speichersteuerung in dem Knoten weiter.
  • Die NIC 1814A-D ist eine Hardware-Komponente, die einen Knoten mit einem Netzwerk verbindet (z. B. den Knoten 1802 und 1803 mit dem einen oder den mehreren Netzwerken, die mit dem Schalter 1804 verbunden sind). Die NIC 1814A-D hostet eine Schaltungsanordnung zur Kommunikation unter Verwendung eines spezifischen Standards (z.B. Ethernet, Wi-Fi, Internet Protocol (IP), zellulär (z.B. Long Term Evolution (LTE) oder ähnliches). Die NIC 1814A-D erlaubt es Knoten, über verdrahtete oder drahtlose Verbindungen dazwischen zu kommunizieren. Die NIC 1814A-D kann den Zugriff auf eine Physical Layer und/oder eine Data Link Layer bereitstellen, z. B. durch Bereitstellen von physischem Zugriff auf ein Netzwerkmedium und zur Adressierung, z. B. durch Media Access Control-(MAC) Adressen im Fall eines 802.11-Netzwerks des Institute for Electrical and Electronics Engineers (IEEE). Die NIC 1814A-D empfängt Speicheranfragen, die durch die Systemadressendecodierer bestimmt werden, entfernt referenziert zu werden. Die NIC 1814A-D stellt einen solchen Speicher an den Schalter 1804 bereit, wie zum Beispiel mit oder ohne Modifikation.
  • Der Schalter 1804 filtert und leitet Pakete zwischen Netzwerken (z. B. lokales Netzwerk- (LAN; local area network) Segmenten, LANs und/oder WANs) weiter. Der Schalter 1804 kann bei der Datenschicht und/oder der Netzwerkschicht arbeiten. Der Schalter 1804 führt ein Verzeichnis der Adressen der mit ihm verbundenen Vorrichtungen. Mit diesen Informationen kann der Schalter 1804 identifizieren, welches System mit welchem Port verbunden ist. Wenn eine Speicheranfrage empfangen wird, kann der Schalter 1804 daher bestimmen, welcher Port davon die Anfrage weiterleiten soll.
  • Die NIC 1814C stellt eine Anfrage an den Client-Server 1806 bereit, der die Anfrage z. B. an den ordnungsgemäßen Teilknoten 1808A-C weiterleitet. Der Server 1806 stellt Ressourcen an die Teilknoten 1808A-C bereit, die Dienste des Servers 1806 anfordern. Eine Antwort auf die Anfrage des Teilknotens 1808A-C wird zurück an die NIC 1814C bereitgestellt. Die NIC 1814C stellt die Antwort an den Schalter 1804 bereit, der die Adresse dekodiert, an die die Antwort referenziert ist. Der Schalter 1804 stellt dann die Antwort an die NIC 1814A bereit, die die Antwort dem entsprechenden Prozessor 1810A-B bereitstellt.
  • 18B stellt ein beispielhaftes System dar. Die NIC 1814A verwendet einen Cache 1854 (z. B. einen Level-One-(L1) Cache oder Level-Two-(L2) Cache) und einen Vorabrufer 1852. Der Vorabrufer 1852 kann bei einem oder mehreren Ausführungsbeispielen die Holen-Vorabrufer 1864A, 1864B, 1864C und die Lade-Vorabrufer 1866A, 1866B und 1866C und/oder die Vorabruf-Logik 1882 umfassen. Bei einem oder mehreren Ausführungsbeispielen kann für jeden entfernten Speicher, auf den über den lokalen Knoten 1802A zugegriffen werden kann, ein Vorabrufer implementiert werden. Bei einem oder mehreren Ausführungsbeispielen kann die NIC 1814A weniger oder mehr Vorabrufer umfassen als die Anzahl der entfernten Speicher, auf die der lokale Knoten 1852A zugreifen kann, können beispielsweise einen einzelnen gemeinschaftlich verwendeten Vorabrufer, dediziert für zwei oder mehr entfernte Speicher, oder eine andere Konfiguration umfassen.
  • Der Vorabrufer 1852 kann Anfragen überwachen, die von dem Knoten 1802A ausgegeben werden. Der Vorabrufer 1852 kann bestimmen, ob irgendwelche Muster (z.B. wiederholte Sequenzen von Adressanfragen) in den ausgegebenen Anfragen vorliegen. Basierend auf den bestimmten Mustern kann der Vorabrufer 1852 eine oder mehrere Anfragen ausgeben, die den Inhalt präventiv oder proaktiv abrufen (z.B. bevor der Knoten 1802A eine Anfrage für den Inhalt erzeugt). Der präventiv abgerufene Inhalt kann in dem Cache 1854 gespeichert werden, um beispielsweise eine Latenzzeit zu reduzieren, die in Knoten 1802A beim Zugriff auf den Inhalt aus dem entfernten Speicher 1870 und/oder 1872 realisiert wurde.
  • Der Vorabrufer 1852 kann einen System-Adressdecodierer (SAD) verwenden (nicht abgebildet). Der SAD kann entfernte Speicherkonfigurationsdaten umfassen, die z.B. in einem Speicher des SAD gespeichert sind und eine Quality of Service- (QoS) Überwachungsschaltungsanordnung. Der SAD kann eine Anfrage (z.B. eine Lade-, Speicher-, Holen-, Ablegen- oder andere Anfrage) empfangen und eine Knotenadresse bestimmen, an die die Anfrage referenziert ist. Der SAD kann den Cache 1854 mit zumindest einigen der Ergebnisse bestücken, die aus Anfragen zurückgegeben werden.
  • Der SAD kann bestimmen, ob eine Anfrage an eine Adresse referenziert ist, die nicht lokal ist (die Anfrage ist dem Speicher in einem entfernten Knoten zugeordnet). Dies kann geschehen durch Bestimmen, dass die Adresse nicht lokal ist (nicht in dem lokalen Speicher vorhanden ist und daher an eine entfernte Adresse referenziert ist) oder Bestimmen, dass eine Charakteristik der Anfrage anzeigt, dass die Speicheranfrage eine Speicheranfrage für eine entfernte Adresse ist, wie beispielsweise, dass eine Zielidentifizierung in der Anfrage leer ist oder ein spezifizierter Wert (eines spezifizierten Bereichs von Werten) (z.B. ein Maximum, Minimum oder ein anderer Wert). Ansprechend auf das Bestimmen, dass die Anfrage an eine Adresse referenziert ist, die nicht lokal ist, kann der SAD die Speicheranfrage an die NIC 1814 weiterleiten, die die Anfrage unter Verwendung einer Schaltdekodierungsanfrage an einen Schalter 1804 weiterleitet. Bei einem oder mehreren Ausführungsbeispielen kann die NIC 1814 die Anfrage vor der Weiterleitung der Anfrage an den Schalter 1804 modifizieren.
  • Einige Vorabrufer (z.B. 1864A-C und/oder 1866A-C) können die nächsten Daten, auf die ein Thread (z.B. ein Prozessor) zugreifen wird (z.B. durch eine Holen- oder Lade-Anfrage), in den entfernten Speichern, auf die der entsprechende Vorabrufer zugreifen soll, vorhersagen und vorabrufen. Einige Vorabrufer können bei einem oder mehreren Ausführungsbeispielen ein oder zwei unterschiedliche Arten von Speicheradressen-Vorabrufen implementieren: (1) Vorabrufer-Speicherleitungen von entfernten Speichern basierend auf Speicherreferenzen, die eine auf dem lokalen Knoten 1804A ausgeführte Anwendung erzeugt hat (z.B. Lade-/Speicheranweisungen), wie z.B. bei Ausführungsbeispielen, bei denen der entfernte Speicher über die Struktur getunnelt ist (z.B. die NIC und/oder der Schalter), auf die durch Lade- und/oder Speicheranweisungen zugegriffen werden kann; (2) Vorabruf-Speicherleitungen von entfernten Speichern basierend auf Speicherreferenzen, die eine auf dem lokalen Knoten ausgeführte Anwendung unter Verwendung von Ablegen/Holen-Anweisungen erzeugt hat. Bei einem oder mehreren Ausführungsbeispielen können sowohl Lade-/Speicher-Anweisungen als auch Holen-/Ablegen-Anweisungen von einem gleichen Vorabrufer gehandhabt werden.
  • Das System 1850 (und andere hierin erörterte Ausführungsbeispiele) sind kompatibel mit bestehenden SADs, können beispielsweise vorhandene SADs, die modifiziert sind, um die Vorabrufer-Schaltungsanordnung zu umfassen oder kommunikativ mit dieser gekoppelt zu werden, umfassen, wie z.B. die Holen-Vorabrufer 1864A-C, die Lade-Vorabrufer 1866A-C und/oder den Vorabrufer-Prädiktor. Der SAD kann einen Speichertyp des Zielknotens zurückgeben (z.B. den Knoten, auf den eine Anfrage referenziert). Der SAD kann eine Granularität zurückgeben, mit der die Daten vorabgerufen werden sollen (z.B. 32 Bytes, 64 Bytes, 128 Bytes, 256 Bytes, etc.). Der SAD kann eine Injektionsrate steuern (wie aggressiv der Vorabrufer Daten aus dem entfernten Speicher abruft).
  • Parameter (z.B. u.a. die Injektionsrate und die Granularität) können bei der Bootzeit in jeder der NICs 1814 konfiguriert werden. Die Granularität und/oder die Injektionsrate können dazu beitragen, eine Quality of Service (QoS) aufrechtzuerhalten. Bei einem oder mehreren Ausführungsbeispielen kann eine höhere Injektionsrate für einen Speicher mit hoher Bandbreite (HBM; high bandwidth memory) verwendet werden, und eine niedrigere Injektionsrate kann für einen Speicher mit niedrigerer Bandbreite (im Vergleich zum HBM) oder einen für das System entscheidenderen Speicher verwendet werden. Die Injektionsrate kann auf einer Vorabruf-Distanz (z.B. wie weit vor der aktuellen Anfrage wird der Vorabrufer handeln) und einem Vorabruf-Grad (z.B. wie viele Vorabrufe pro Anfrage ausgeführt werden) basieren. Es wird darauf hingewiesen, dass eine Anfrage eine Lade-, Speicher-, Ablegen-, Holen- oder andere ähnliche Operation ist. Der Vorabrufer einen Speicher binden, indem er zu viele Zugriffe durchführt und den Speicher nicht für den Zugriff durch andere Ressourcen des Systems verfügbar lässt.
  • Bei einem oder mehreren Ausführungsbeispielen kann ein entfernter Knoten (z. B. eine entfernte Speichersteuerung oder ein Server) den Vorabrufern eine Anzeige bereitstellen, der die Vorabrufer dazu veranlasst, ihre Injektionsrate anzupassen. Der entfernte Knoten kann detektieren, dass der entfernte Speicher nicht in der Lage ist, mit dem aktuellen Bedarf mitzuhalten, und als Antwort darauf einem oder mehreren der Vorabrufern die Anzeige bereitstellen, die auf den entfernten Speicher zugreifen. Der Vorabrufer kann dann die Injektionsrate reduzieren (oder den Vorabrufer stoppen), z.B. um den Bedarf des entfernten Speichers zu reduzieren. Die Injektionsrate kann auch basierend auf der historischen Nutzung eines entfernten Speichers eingestellt werden.
  • Der Vorabrufer kann ein Vorabruf-Schema implementieren, kann beispielsweise einen Cache-Block, eine nicht blockierende Last, einen Hardware-gesteuerten Vorabrufer und/oder einen Software-gesteuerten Vorabrufer umfassen. Bei einem oder mehreren Ausführungsbeispielen kann jeder der Vorabrufer ein gleiches Vorabruf-Schema implementieren oder ein oder mehrere Vorabrufer können ein unterschiedliches Vorabruf-Schema als ein anderer Vorabrufer implementieren. Ein Vorabrufen ist nützlich, wenn eine Adresse, auf die eine Anwendung zugreift, im Voraus bestimmt werden kann. Einige Anwendungen können einen nicht-deterministischen (z.B. unvorhersehbaren) Zugriff umfassen. Der Vorabrufer kann unter Verwendung von Hardware, einem Kompilierer und/oder einem Programmierer implementiert werden. Bei einem oder mehreren Ausführungsbeispielen können die vorabgerufenen Daten in einem von der Anwendung verwendeten Cache (z. B. dem L1- oder L2-Cache), einem Vorabrufer -Cache oder einem Cache oder Speicher in der NIC gespeichert werden.
  • Die Vorabruf-Logik 1882 überwacht Prozessorzugriffe, bestimmt Muster/Schritte und erzeugt (z.B. automatisch) Vorabruf-Adressen. Bei einem ausführungsbasierten Vorabrufer (z.B. Software-Vorabruf) wird ein Thread ausgeführt, um Daten für eine Anwendung vorabzurufen. Der Thread oder die Vorabruf-Zugriffsreihenfolge oder der Prädiktor kann von einem Programmierer oder von der Hardware erzeugt werden.
  • Einige Hardware-Vorabrufschemata rufen nach einer Zugriffsoperation immer N Adressen vorab. Dieses Schema ist einfach und funktioniert gut mit sequentiellen Zugriffsstrukturen, aber es funktioniert nicht gut mit nicht-aufeinanderfolgenden Zugriffsstrukturen. Ein weiteres Hardware-Vorabruf-Schema umfasst einen Schritt-Vorabrufer (z.B. einen Anweisungsprogrammzähler oder einen auf Cache-Blockadressen basierenden Vorabrufer). In einem Schritt-Vorabrufer ein Abstand zwischen Speicheradressen, die durch eine Lade- oder Holen-Anweisung (z.B. einen Schritt der Anweisung) referenziert werden, und der letzten Adresse, die durch die Lade- oder Holen-Anweisung referenziert wird. Beim nächsten Abruf der gleichen Adresse kann die letzte Adresse plus der Schritt sowie andere Adressen vorabgerufen werden.
  • Ein weiteres Hardware-Vorabruf-Schema umfasst einen Stream-Puffer-Vorabrufer. In einem Strom-Puffer-Vorabrufer umfasst jeder Strom-Puffer einen Strom von vorabgerufenen Cache-Leitungen. Beim Laden kann ein Eintrag aller Strom-Puffer auf eine Adressübereinstimmung überprüft werden. Wenn es eine Übereinstimmung gibt, kann der Cache aktualisiert werden. Wenn es keine Übereinstimmung gibt, können der eine oder die mehreren Stream-Puffer aktualisiert werden, um neue Daten zu umfassen, z. B. basierend auf der Schrittvorhersage.
  • Bei Scale-Out-Architekturen (z. B. Ethernet-kompatibles Struktur oder Netzwerk) stellen Knoten, die als Rechenschlitten fungieren, Zugriff auf unterschiedliche Rechenressourcen bereit. Beispielsweise kann ein Rechenschlitten eine beschleunigte Verarbeitung, Speicherung, Speicherpools oder Inferenzfähigkeit durch künstliche Intelligenz (AI; artificial intelligence) bieten. Eine Herausforderung bei Scale-Out-Architekturen ist die Datenverfügbarkeit, wenn mit der Verarbeitung begonnen werden soll.
  • Verschiedene Ausführungsbeispiele stellen proaktive oder spekulative Vorababrufe von Daten oder anderem Inhalt (z.B. Anweisungen, Parameter (z. B. Gewichte neuronaler Netzwerke) oder Nachrichten) von einem entfernten Vorrichtungsspeicher oder -speicherung bereit, basierend auf der Verfügbarkeit von Struktur- oder Netzwerkbandbreite und der Kapazität zum Speichern von Daten. Proaktives oder spekulatives Schreiben von Daten (oder anderem Inhalt) zu einem entfernten Zielspeicher oder -speicherung ist ebenfalls bereitgestellt. Während die Ausführungsbeispiele im Hinblick auf einen Host beschrieben werden, der Vorabruf-Anfragen und proaktive Vorabruf-Anfragen ausgibt, können Ausführungsbeispiele für Beschleuniger- oder entfernte Prozessor-Vorrichtungen verwendet werden, um auch Daten aus dem Speicherplatz einer Anwendung oder aus dem Speicherplatz einer Vorrichtung vorabzurufen oder proaktiv vorabzurufen.
  • Verschiedene Ausführungsbeispiele legen eine Schnittstelle zu einem Softwarestapel frei, um die Möglichkeit bereitzustellen, Inhalt von einer entfernten Ressource vorabzurufen. Eine Netzwerkschnittstelle kann eine Speichervorrichtung (z.B. Cache oder flüchtiger Speicher) umfassen. Eine Netzwerkschnittstelle kann eine Host-Fabric-Schnittstelle umfassen oder verwenden und umgekehrt. Eine Anwendung oder eine Vorrichtung kann ein Vorabrufen von Daten (oder anderem Inhalt) anfragen, und die Netzwerkschnittstelle kopiert die Daten (oder anderen Inhalt) zu ihrer Speichervorrichtung, bevor sie unter Verwendung des Level 1 (L1)-Caches oder des Level 2 (L2)-Caches verarbeitet werden sollen oder auf sie zugegriffen werden soll. Für das Speichern von Daten oder Inhalt zur Verwendung durch eine Rechenplattform über eine lokale Verbindung können mehrere Speicher- oder Speicherungslagen zur Verfügung stehen. Eine lokale Verbindung kann den Zugriff auf einen Speicher oder eine Speicherung über einen Bus, Verbindung, Buchse umfassen. Ein lokal verbundener Speicher kann einen Speicherbus, eine Verbindung oder eine Schnittstelle verwenden, um mit einer CPU oder Kernen zu verbinden, anstatt über eine Struktur oder ein Netzwerk.
  • Mehrere Speicher- oder Speicherungslagen können beispielsweise eines oder mehrere umfassen aus: Cache (z. B. L1, L2, L3, LLC), Speicher (z. B. DDR-kompatibler Speicher oder HBMkompatibler Speicher), dauerhafter Speicher (z. B. Intel Optane® oder Samsung Z-NAND), Speicherung (z. B. NAND oder 3D-NAND) oder 2-Level-Speicher (2LM). Verschiedene Ausführungsbeispiele können Daten von einer Speicher- oder Speicherungslage zu einem Cache (z. B. L1- oder L2-Cache) kopieren, vor einer von einer Anwendung oder einer Vorrichtung festgelegten Zeitgrenze für die Verarbeitung oder den Zugriff durch die Anwendung oder die Vorrichtung.
  • 19A zeigt ein beispielhaftes System. Die Rechenplattform 1902 kann Prozessoren, Cache und Speicher zur Verwendung durch Anwendungen zur Datenverarbeitung bereitstellen. Die Rechenplattform 1902 kann Software mit Rechenfähigkeit unter Verwendung eines oder mehrerer Prozessoren und/oder Beschleunigervorrichtungen bereitstellen. Beispielsweise können ein Betriebssystem (OS; operating system) und ein Treiber, die von Prozessoren auf der Rechenplattform 1902 ausgeführt werden, einer Anwendung den Zugriff auf die Netzwerkschnittstelle 1920 bereitstellen. Die Netzwerkschnittstelle 1920 kann der Rechenplattform 1902 Kommunikationen mit einer anderen Netzwerkvorrichtung oder anderen Rechenplattformen bereitstellen. Eine Netzwerkvorrichtung kann eine Schnittstelle zu irgendeiner Art von Netzwerk (verdrahtet oder drahtlos), Verbindung, Struktur, Bus und so weiter sein. Eine Netzwerkvorrichtung kann ein Vermittler sein, der ausgebildet ist, um Inhalt von einem entfernten Speicher zu einem Speicher in der Netzwerkschnittstelle 1920 und/oder der Rechenplattform 1902 in Verbindung mit einem Inhalts-Vorabrufen zu empfangen und zu senden. Die Netzwerkschnittstelle 1920 kann irgendeiner Netzwerkvorrichtung Speicherbandbreite, Netzwerkvorrichtungs-Austrittsbandbreite und Speicherplatz zur Verwendung mit einem Vorabrufen zuordnen.
  • Die Netzwerkschnittstelle 1920 kann eine Schnittstelle zu dem Softwarestapel der Rechenplattform 1902 freilegen, die verwendet werden kann, um Inhalte einer in einem entfernten Knoten abgebildeten Speicherregion zu dem lokalen Speicher-Cache der Netzwerkschnittstelle 1920 (z. B. Speicher 1924 oder 1926) oder einer Speicherlage (z. B. Speicher 1904, 1906, 1908 oder Cache 1912) der Rechenplattform 1902 vor der Verwendung durch eine Anwendung über einen Cache, der von einem Prozessor der Rechenplattform 1902 verwendet wird, zu kopieren. Ein Befehl kann einem Kern oder Prozessor 1910 freigelegt sein, der verwendet wird, um ein Vorabrufen von Inhalt aus einem entfernten Speicher oder einer Speicherungsvorrichtung vor dem Zugriff aus einem Cache in der Rechenplattform 1902 zu programmieren. Eine Anwendung oder Software kann an die Netzwerkschnittstelle 1920 einen Befehl mit einem Zeiger ausgeben, um Informationen von einem entfernten oder fernen Speicher oder einer Speicherungsvorrichtung vorabzurufen. Die Fern-Vorabruf-Informationen können eines oder mehrere umfassen aus: (1) eine virtuelle Basisadresse, die aus dem entfernten Speicher abgerufen werden soll, (2) eine Ganzzahl, die die Anzahl der Leitungen angibt, die aus dem entfernten Speicher abgerufen werden müssen, (3) der entfernte Knoten, der die abzurufende Region speichert, (4) eine Priorität des gegebenen Vorabrufs, der einer Anwendung zugeordnet ist (PASID; prefetch associated with an application), (5) ein Flag (z.B. ein oder mehrere Bits), um anzuzeigen, ob Ressourcen (z.B, Puffer in der Netzwerkschnittstelle, irgendeiner Netzwerkvorrichtung, einem entfernten Speicher, einer entfernten Speicherung) in dem Ende-zu-Ende-Pfad (von dem entfernten Speicher oder Speicherung zur Rechenplattform 1902) für die Übertragung von Inhalt an die Netzwerkschnittstelle 1920 oder die Speicherlage(n) der Rechenplattform 1902 reserviert werden sollen, (6) eine Gültigkeits-Zeitlänge der Anfrage und die Länge kann mit einem ganzzahligen Wert, der die Zeitdauer angibt, und einer ganzen Zahl, die die Einheiten der Zeitdauer angibt, angegeben werden (z.B. 1 = ns, 2 = ms , etc.). Die Gültigkeitsdauer kann eine Zeit oder ein Zeitgeber sein, zu der/dem Daten in einem L1- oder L2-Cache (oder einer anderen Speicherlage (z. B. LLC, DRAM oder HBM) der Rechenplattform 1902 oder in einem Cache oder Speicher der Netzwerkschnittstelle 1920 für die Verarbeitung oder den Zugriff (unter Verwendung der für die Zeitdauer angegebenen Einheiten) benötigt werden. Nachdem die Zeit oder der Zeitgeber abgelaufen ist, kann die Reservierung von Ressourcen freigegeben werden. Eine Anwendung oder eine Vorrichtung kann den Befehl unter Verwendung irgendeiner Standard- oder proprietären Schnittstelle zwischen der Rechenplattform 1902 und der Netzwerkschnittstelle 1920 senden.
  • Anwendungen oder Vorrichtungen, die in der Rechenplattform 1902 ausgeführt werden, können programmiert werden, um im Voraus zu erkennen, welche Daten von einem entfernten Knoten benötigt werden, bevor die Daten verarbeitet werden sollen oder auf sie zugegriffen werden soll, können einen Vorabruf dieser Daten zu einem Cache oder Speicher der Netzwerkschnittstelle 1920 oder einer Speicherlage der Rechenplattform 1902 verursachen. In einigen Fällen verunreinigt ein Vorabruf den L1- oder L2-Cache der lokalen Kerne der Rechenplattform oder L1 oder L2 der Netzwerkschnittstelle nicht.
  • Bei einigen Ausführungsbeispielen wird, wenn eine Anwendung zur Ausführung unter Verwendung eines Prozessors zur Verfügung steht (z. B. wenn eine Anwendung instanziiert wird), eine Speicherregion bestimmt und bekannt, in dem sich die Zieldaten in einer entfernten oder lokalen Vorrichtung befinden. Die Netzwerkschnittstelle 1920 umfasst den Systemadressendecodierer (SAD) 1928 zur Übersetzung der Anfrage aus dem Softwarestapel (TLB) von einer virtuellen in eine physische Adresse, und die Netzwerkschnittstelle kann eine physische Adresse in einem entfernten Speicher bestimmen. Virtuelle-zu-physische Übersetzung und umgekehrt in lokalen und entfernten Knoten kann unter Verwendung von Hardwareressourcen wie der Eingabe-Ausgabe-Speicher-Verwaltungseinheit (IOMMU; input-output memory management unit) oder anderen Vorrichtungen oder Diensten zur Adressübersetzung durchgeführt werden. In einigen Fällen kann eine Anwendung oder ein Beschleuniger ein Vorabrufen von Daten anfragen, ohne zu wissen, ob die Daten lokal oder entfernt gespeichert sind.
  • Für einen Pfad unterschiedlicher Netzwerkvorrichtungen, den vorabgerufener Inhalt (z. B. Netzwerkschnittstelle, Schalter, Puffer) von dem entfernten Speicher zu dem Speicher der Netzwerkschnittstelle 1920 oder irgendeiner der Speicherlagen der Rechenplattform 1902 quert, kann der Quality of Service (QoS)-Zeitplaner 1922 Netzwerkbandbreiten-Ressourcen (z.B. Austrittsbandbreite und Warteschlangen) reservieren, um sicherzustellen, dass Daten schnell genug empfangen werden, um bestimmte, von einer Anwendung festgelegte Zeitanforderungen zu erfüllen. Der QoS-Zeitplaner 1922 kann auch Platz im Cache oder in Speicherpuffern in Vorrichtungen entlang des Pfades zuordnen, umfassend die Netzwerkschnittstelle 1920 und die Rechenplattform 1902. Bei einigen Beispielen kann sich der QoS-Zeitplaner 1922 mit einem POD-Manager koordinieren, um zu reservierende Ressourcen (z. B. Bandbreite oder Speicherplatz) zu ermitteln und einen Fluss, der Inhalt aus einem entfernten Speicher trägt, für einen Inhaltsvorabruf zu reservieren. Bei einigen Beispielen kann der QoS-Zeitplaner 1922 mit einem Pod-Manager, Orchestrator, Hypervisor, Virtuelle-Maschine- (VMM; virtual machine manager) oder einem anderen Vorrichtungsmanager kommunizieren, der Bandbreite und Speicherplatz für einen Inhalts-Vorabruf verwaltet.
  • Der QoS-Zeitplaner 1922 kann bestimmen, ob genügend Bandbreite oder Pufferressourcen zur Verfügung stehen, um eine Vorabruf-Anfrage in einer bestimmten Zeit zu vervollständigen. Wenn ein Vorabruf nicht genügend zugeordnete Ressourcen umfasst oder die Zeit, wie lange dieser Vorabruf über eine bestimmte Ressource im Ende-zu-Ende-Pfad verfügt, abgelaufen ist, kann der QoS-Zeitplaner 1922 den Vorabruf beenden oder ablehnen. Beispielsweise kann der QoS-Zeitplaner 1922 die Bandbreite und die Speicherressourcen bestimmen, die für einen Vorabruf von Inhalt zu dem Speicher 1924 oder 1926 der Netzwerkschnittstelle 1920 verwendet werden sollen, eine lokale Speicherlage (z. B. Speicher 1906) der Rechenplattform 1902 zu dem von einer Anwendung oder einem Beschleuniger verwendeten Cache (z. B. L1 oder L2). Wenn nicht genügend Ressourcen zur Verfügung stehen, so dass der Vorabruf nicht innerhalb einer vorgeschriebenen Zeitgrenze abgeschlossen werden kann, kann der QoS-Zeitplaner 1922 die anfragende Anwendung oder die Vorrichtung darüber informieren, dass die Vorabruf-Anfrage abgelehnt wird. Der QoS-Zeitplaner 1922 kann eine Vorabruf-Anfrage fallen lassen oder ablehnen, wenn irgendeine der intermediären Ressourcen nicht über Ressourcen verfügt, die es einem Vorabruf ermöglichen, in der erforderlichen Zeit abzuschließen. Wenn eine Antwort auf einen Vorabruf nicht in der erforderlichen Zeit empfangen wird, kann die Antwort verworfen und nicht in dem zugeordneten Speicher gespeichert werden.
  • Der QoS-Zeitplaner 1922 kann Bandbreite und den Speicherpufferplatz priorisieren, die Vorabruf-Anfragen mit höherer Priorität zugeordnet sind. In einem Fall, in dem mehrere Vorabruf-Anfragen empfangen werden, kann der QoS-Zeitplaner 1922 Bandbreite und Speicherpufferplatz für eine Anfrage mit höherer Priorität zuweisen. In einem Fall, in dem Vorabruf-Anfragen dieselbe Prioritätsstufe haben, kann der QoS-Zeitplaner 1922 eine Vorabruf-Anfrage mit einer geringeren erforderlichen Zeit bis zur Fertigstellung auswählen.
  • Verschiedene Ausführungsbeispiele können einen System-Hauptspeicher (z. B. 1904, 1906 und/oder 1908) mit zumindest zwei Speicherebenen (hierin alternativ als „2LM“ bezeichnet) verwenden, der gecachete Teilmengen von Systemplattenebene-Speicherung (zusätzlich z.B. zu Laufzeitdaten) umfasst. Dieser Hauptspeicher umfasst eine erste Ebene (hierin alternativ als „naher Speicher“ bezeichnet), die einen kleineren, schnelleren Speicher, z. B. aus DRAM oder einem anderen flüchtigen Speicher, bestehend, umfasst; und eine zweite Ebene (hierin alternativ als „ferner Speicher“ bezeichnet), die einen größeren und langsameren (in Bezug auf den nahen Speicher) flüchtigen Speicher (z.B. DRAM) oder nichtflüchtigen Speicher (z.B. Flash-Speicher oder byteadressierbaren nichtflüchtigen Speicher (z.B. Intel Optane®)) umfasst. Der ferne Speicher wird dem Host-Betriebssystem (OS) als „Hauptspeicher“ präsentiert, während der nahe Speicher ein Cache für den fernen Speicher ist, der für das OS transparent ist, so dass die nachfolgend beschriebenen Ausführungsbeispiele dem Stand der Technik für Hauptspeicherlösungen entsprechen. Die Verwaltung des Zwei-Ebenen-Speichers kann durch eine Kombination von Logik und Modulen erfolgen, die über die zentrale Host-Verarbeitungseinheit (CPU; central processing unit) ausgeführt werden. Der nahe Speicher kann über Mittel mit hoher Bandbreite und niedriger Latenzzeit für eine effiziente Verarbeitung mit der CPU des Host-Systems gekoppelt werden. Der ferne Speicher kann über Mittel mit niedriger Bandbreite und hoher Latenzzeit (im Vergleich zu denen des nahen Speichers) mit der CPU gekoppelt werden.
  • Verschiedene Ausführungsbeispiele können zeitliche Hinweise darauf geben, wann die Voranruf-Schemata gültig sind, welche die zugeordnete Priorität ist und wann sie fallengelassen werden können oder nicht. Die Möglichkeit des Fallenlassens bedeutet zum Beispiel, dass, wenn eine gegebene Lage ein bestimmtes Vorabrufen nicht verarbeiten kann, die Lage beschließen kann, es fallen zu lassen, ohne demjenigen, der das Vorabrufen erzeugt, irgendeinen Grund dafür zu nennen. Unterschiedliche Ebenen von Vorabruf-Prioritäten können von anderen Vorrichtungen unterstützt und entdeckt werden.
  • 19B zeigt ein Beispiel einer Vorrichtungs-Wechselwirkung für einen Vorabruf. Der Datenpfad-Ressourcenmanager1950 kann die Koordination der Allokation von Bandbreite und Speicherpufferplatz in irgendeiner Netzwerkvorrichtung entlang eines Pfades von einem entfernten Speicher zu einer oder mehreren Speicherlagen durch null oder mehr Netzwerkvorrichtungen bereitstellen. Beispielsweise kann der Datenpfad-Ressourcenverwalter 1950 ein Pod-Verwalter, Orchestrator, Hypervisor, Virtual Machine Manager (VMM) oder eine andere Vorrichtung oder eine andere Software sein. Bei diesem Beispiel ist eine einzelne Netzwerkvorrichtung 970 ein Vermittler zwischen einer entfernten Speichervorrichtung 1980 und der Netzwerkschnittstelle 1960 des Rechenknotens. Bei anderen Beispielen liegt keine intermediäre Netzwerkvorrichtung zwischen dem entfernten Speicher und der Netzwerkschnittstelle des Rechenknotens vor. Bei einigen Beispielen liegen mehrere intermediäre Netzwerkvorrichtungen vor. Inhalt kann von einer entfernten Speichervorrichtung 1980 abgerufen und zu einer Anforderer-Netzwerkvorrichtung 1960 kopiert werden. In einigen Fällen kann Inhalt von einem Speicher einer Anforderer-Netzwerkvorrichtung 1960 oder einer Rechenplattform, die eine Anforderer-Netzwerkvorrichtung 1960 verwendet, zu einem Speicher einer entfernten Netzwerkvorrichtung 1980 kopiert (vorgeschoben) werden. Die Netzwerkschnittstelle und Vorrichtungen 1960, 1970 und 1980 können QoS-Zeitplaner verwenden, um die Bandbreiten- und Speicherplatzzuordnung für eine Vorabruf-Anfrage aufrechtzuerhalten.
  • 20 zeigt ein Beispiel eines Vorabruf-Flusses. Der Cache-Agent (CA1) (z. B. eine Anwendung oder eine Vorrichtung) gibt eine Vorabruf-Anfrage mit Priorität, Zeiteinheit und Zeitpunkt der Fertigstellung an NIC/HFI aus. Der CA1 kann einen Vorabruf-Befehl an die NIC/HFI senden, um den Vorabruf anzufragen. Die NIC/HFI extrahiert einen Speicherdeskriptor aus dem Befehl, der auf den lokalen Speicherbereich verweist, wo die Fern-Vorabruf-Daten gespeichert sind.
  • Die NIC/HFI reiht die Anfrage in eine neue lokale Warteschlange (oder mehrere Warteschlangen) ein, die die ausstehenden Anfragen und die zugeordnete Priorität umfasst. Jede Anfrage hat eine Priorität (KEINE, 1,..n) und kann einer mit ihrer Priorität zugewiesenen Warteschlange zugeordnet werden. Die NIC/HFI verwendet einen Zeitplaner, um die Performance unter allen ausstehenden Anfragen gemäß der Priorität zu priorisieren. Anfragen werden fallen gelassen, wenn die Zeit, die der Anfrage zugewiesen wurde, höher ist als die bereitgestellte Gültigkeitsdauer der Anfrage (falls bereitgestellt).
  • Der NIC/HFI-Zeitplaner gibt über den Host-Fabric-Adapter (HA2) ein Ablesen (RdCur) an den lokalen Speicher (DDR) aus, um zu bestimmen, ob der lokale Speicher den vorabgerufenen Inhalt speichert. Bei diesem Beispiel speichert der lokale Speicher einen Teil des angefragten Inhalts, der vorabgerufen werden soll, und der lokale Speicher stellt Daten an die NIC/HFI bereit, wo sie gespeichert werden können, bis sie in einen Cache (z. B. L1 oder L2) von CA1 kopiert werden.
  • Zusätzlich oder alternativ liest NIC/HFI die gegebene Speicherzeile aus dem lokalen Speicher und extrahiert die virtuelle Adresse, die Anzahl der aus dem entfernten Speicher vorabzurufenden Zeilen und die Knoten-ID, an die der ferne Vorabruf gesendet werden soll.
  • Eine Vorabruf-Transaktion wird verweigert, wenn die angegebene Größe größer ist als ein Wert, der durch Register (z.B. modellspezifische Register (MSRs; model specific registers)) konfiguriert und zur Bootzeit konfiguriert wird. Falls die maximale Nutzlast pro Holen-Nachricht, die von der Struktur unterstützt wird, kleiner ist als der Betrag des angeforderten Vorabrufs, erzeugt die NIC/HFI den Betrag der Holen-Vorgänge, der zur Erfüllung der Anfrage erforderlich ist.
  • Die NIC/HFI reserviert Einträge in den entsprechenden Puffern, um zu gewährleisten, dass bei der Rückgabe von Vorabruf-Daten die Daten über die erforderlichen Ressourcen verfügen, um L1 oder L2 der Rechenplattform zu erreichen. Für den Fall, dass der Vorabruf nicht fallengelassen wird, reservieren die Ressourcen in der Struktur und dem entfernten Knoten, die die Anforderung durchläuft, Einträge in den Puffern irgendeines der intermediären Puffer in dem Ende-zu-Ende-Pfad, um zu versuchen, bereitzustellen, dass die Daten, wenn die Vorabruf-Daten an den HFI/NIC-Anfrager gesendet werden, über die erforderlichen Ressourcen verfügen, um rechtzeitig in dem L1 oder L2 gespeichert zu werden.
  • Die NIC/HFI erzeugt eine oder mehrere Holen-Nachrichten an den entfernten Knoten, um den Inhalt abzurufen, der aus dem entfernten Speicher zu dem Speicher oder Cache des NIC/HFI oder eine oder mehrere Speicherlagen einer Rechenplattform vorabgerufen werden muss. Lokale NIC/HFI können eine oder mehrere Holen-Nachrichten an eine entfernte NIC/HFI Zwischen-Vorrichtungs-Verbindung (IDI; Inter-device interconnect) ausgeben. Eine Holen-Nachricht kann einen Indikator bereitstellen, dass das aktuelle Holen ein Vorabruf-Ablesen ist, das in den entfernten Speicher gelesen wurde, sowie verwandte Parameter (z.B. Priorität, Gültigkeitsdauer, Zeiteinheiten). Parameter können von einer entfernten HFI (z.B. dem QoS-Zeitplaner der Netzwerkvorrichtung) verwendet werden, um die Quality of Service anzuwenden, um die Systemnutzung zu verbessern (z.B. Upgrade oder Downgrade der Priorität dieser Art von Ablesen) oder die Transaktion abzulehnen (z.B. wenn die HFI überlastet ist und die Verarbeitung des Vorabrufs die Performance bestehender regulärer Ablesungen beeinträchtigen würde). Es wird darauf hingewiesen, dass trotz des Fehlschlagens einiger Holen-Nachrichten ein teilweiser Vorabruf immer noch gültig sein kann, um so viel Inhalt wie möglich mit den verfügbaren Ressourcen vorabzurufen.
  • Basierend auf einem oder mehreren Holen-Befehlen erzeugt die NIC/HFI eine oder mehrere Ablese-Nachrichten (RdCur) an den Host-Adapter HA3 und den Cache-Agenten CA5 mit einem Speicher-Ablesen (MemRd) zu dem Speicher (z. B. DDR). Der entfernte Speicher stellt Inhalt (Daten) als eine Antwort durch HA3 und CA6 an die NIC/HFI bereit. Eine Antwort oder aus dem entfernten Speicher empfangene Daten werden in dem Cache des NIC/HFI oder in einer Speicherlage oder einem Cache einer Rechenplattform gespeichert.
  • Die Antwort der HFI des entfernten Speichers kann ein NACK sein (z.B. es gibt eine Ressourcenkonkurrenz in der Ziel-HFI oder die Ressource ist für den Anfrager nicht verfügbar (z.B. Sicherheitsverletzung, fehlende Erlaubnis)). In diesem Szenario lernt der Softwarestapel unter Verwendung bestehender Mechanismen, dass der Vorabruf-Befehl fehlgeschlagen ist. Die NIC/HFI könnte dem Softwarestapel unter Verwendung einer Software-Unterbrechung mitteilen, dass der ferne Vorabruf fehlgeschlagen ist.
  • In der Rechenplattform gibt CA1 RdData aus, um vorabgerufene Daten aus dem NIC/HFI-Cache oder -Speicher zu dem L1- oder L2-Cache zu kopieren. Wenn die Anwendung das tatsächliche Ablesen an eine der vorabgerufenen Zeilen ausgibt, wird das Ablesen wahrscheinlich einen Treffer in dem Speicher-Cache erzielen (z. B. L1 oder L2). Ein Ablesen schlägt fehl, wenn Zeilen aus dem lokalen Cache verdrängt wurden oder wenn das ferne Vorabrufen fehlgeschlagen ist.
  • Bei verschiedenen Ausführungsbeispielen kann vorabgerufener Inhalt in eine andere Speicherlage überlaufen. Wenn z. B. in einer Lage 0 (z. B. LLC) nicht genügend Platz für Inhalt (z. B. durch Verdrängung) vorhanden ist, kann Inhalt in Lage 1-Speicher (z. B. DDR oder HBM) oder Lage 2-Speicher (z. B. dauerhafter Speicher oder Speicherungsklassenspeicher) gespeichert werden. Ebenso kann Inhalt, der aus dem Lage 1-Speicher verdrängt wird, im Lage 2-Speicher gespeichert werden.
  • 21 zeigt ein Beispiel für ein fernes mehrzeiliges Vorabrufen, bei dem mehrere Speicherzeilen von einem entfernten Knoten in den Speicher oder Cache des lokalen Knotens (z.B. Speicher oder Cache von NIC/HFI oder eine Speicherlage der Rechenplattform) unter Verwendung eines einzelnen fernen Struktur-Vorabrufs vorabgerufen werden. Sobald die Daten die mehreren Speicherzeilen tatsächlich benötigen, befinden sich die Speicherzeilen bereits in dem Speicher oder Cache des HFI. RdData zieht vorabgerufene Daten an den L1- oder L2-Cache.
  • 22 stellt ein beispielhaftes Vorabruf-Cache-System dar. Das Vorabruf-Cache-System kann von einer Netzwerkschnittstelle 2200 verwendet werden. Um die Verschmutzung des lokalen Caches in der Netzwerkschnittstelle zu verringern, die durch das ferne Vorabruf-Ablesen und andere Interaktionen mit anderen bestehenden regelmäßigen Holen/Ablesen verursacht wird, stellen verschiedene Ausführungsbeispiele einen Nur-Lese-Vorabruf-Cache 2202 bereit, der für die Speicherung von Nur-Lese-Daten von Vorabruf-Operationen bestimmt ist. Ein regelmäßiges Ablesen (z.B. RdData) zum Kopieren von Inhalt aus der Netzwerkschnittstelle 2200 zu einem L1- oder L2-Cache einer Rechenplattform könnte Inhalt parallel aus beiden Caches 2202 und 2204 kopieren. Im Falle eines Treffers in den Vorabruf-Cache könnte der Inhalt mit dem angeforderten Status (z.B. Treffer) zu dem Haupt-Netzwerkschnittstellen-Cache 2204 kopiert und der Inhalt aus dem Vorabruf-Cache 2202 entfernt werden oder ungültig gemacht werden. Wenn ein Fehlschlag auftritt, wird dem Anfrager ein Fehlschlag-Indikator bereitgestellt. Daten (Nutzlast) werden der Rechenplattform (z.B. L1- oder L2-Cache) bereitgestellt, wenn es einen Treffer entweder in dem Vorabruf-Cache 2202 oder in dem Cache 2204 gibt.
  • Wie gezeigt, kann der Vorabruf-Cache 2202 zum Speichern von Inhalt zugewiesen werden, zugeordnet zu verschiedenen Stufen von Prioritätsstufen-Anfragen. Die Warteschlangen 2206 können verschiedene Anfragen (z.B. Vorabruf-Anfragen, Holen-Anfragen oder Verschieben-Anfragen) und zugeordnete Informationen speichern. Die Warteschlangen 2206 können die Reihenfolge der Befehle gemäß der zugeordneten Priorität bereitstellen. Im Allgemeinen können Befehle von höherer Priorität vor Befehlen mit niedrigerer Priorität ausgeführt werden. Die Ausführung von Befehlen, Vorabruf-Anfragen, Holen-Anfragen oder Verschieben-Anfragen der gleichen Prioritätsstufe kann auf einer geringeren erforderlichen Zeit bis zur Fertigstellung oder zum nächst gelegenen Zeitpunkt bis zur Fertigstellung basieren. Ausstehende Anfragen können einer Warteschlange zugewiesen werden, vor der Bezeichnung zu einer Prioritätswarteschlange.
  • 23 zeigt einen beispielhaften Prozess, der durch eine Netzwerkschnittstelle ausgeführt werden kann, um ein Vorabrufen von Inhalt anzufragen. Bei 2302 erhält eine Netzwerkschnittstelle eine Vorabruf-Anfrage. Die Vorabruf-Anfrage kann sich auf zugeordnete Parameter beziehen. Zugeordnete Parameter können einer oder mehrere sein aus: (1) eine virtuelle Basisadresse, die aus dem entfernten Speicher abgerufen werden soll, (2) eine Ganzzahl, die die Anzahl der Zeilen anzeigt, die aus dem entfernten Speicher abgerufen werden müssen, (3) der entfernte Knoten, der die abzurufende Region speichert, (4) eine Priorität des gegebenen Vorabrufs, der einer Anwendung zugeordnet ist (PASID; process address ID), (5) ein Flag, um anzuzeigen, ob Ressourcen (z.B. Puffer in der Netzwerkschnittstelle, irgendeiner Netzwerkvorrichtung, einem entfernten Speicher, einer entfernten Speicherung) in dem Ende-zu-Ende-Pfad (von dem entfernten Speicher oder Speicherung zur Rechenplattform) für die Übermittlung von Inhalt an die Netzwerkschnittstelle oder die Speicherlage(n) der Rechenplattform reserviert werden sollen, (6) eine Gültigkeits-Zeitlänge der Anfrage und die Länge kann mit einem Wert, der die Zeitdauer und die Einheiten der Zeitdauer angibt, angegeben werden. Die Gültigkeitsdauer kann eine Zeit oder ein Zeitgeber sein, bei dem Daten in einem L1- oder L2-Cache der Rechenplattform für die Verarbeitung oder den Zugriff (unter Verwendung von für die Zeit angegebenen Einheiten) oder einer anderen Speicherlage (z. B. LLC, DRAM oder HBM) der Rechenplattform oder in einem Cache oder Speicher einer Netzwerkschnittstelle benötigt werden.
  • Bei 2304 wird entschieden, ob eine Vorabruf-Anfrage angenommen oder abgelehnt werden soll. Beispielsweise kann eine Bestimmung der Ressourcen vorgenommen werden, die für die Durchführung der Vorabruf-Anfrage innerhalb der Zeitgrenze erforderlich sind (z. B. Kopie des angegebenen Inhalts in einem entfernten Speicher zu einer lokalen Speicherlage oder zu dem Speicher einer Netzwerkschnittstelle oder zu einem L1- oder L2-Cache innerhalb der Zeitgrenze). Ein Vorabruf kann akzeptiert werden, wenn die Vorabruf-Anfrage innerhalb der vorgeschriebenen Zeitgrenze abgeschlossen werden kann, da Bandbreite sowie intermediäre Puffer- und Zielspeicherressourcen zur Nutzung zur Verfügung stehen, so dass die Zeitgrenze erfüllt werden kann. Wenn die Vorabruf-Anfrage nicht innerhalb der Zeitgrenze erfüllt werden kann, aber irgendeine der Vorabruf-Anfragen erfüllt werden kann, dann kann die Vorabruf-Anfrage modifiziert werden, um zumindest einigen Inhalt, zugeordnet zu der Anfrage, innerhalb der Zeitgrenze vorabzurufen, und die modifizierte Vorabruf-Anfrage wird akzeptiert. Bei 2320 kann die Vorabruf-Anfrage aus Gründen wie Sicherheitsfragen oder unzureichenden Ressourcen abgelehnt werden.
  • Bei 2306 kann die Auswahl einer verfügbaren Vorabruf-Anfrage zumindest basierend auf Priorität erfolgen. Beispielsweise kann ein Prioritätsindikator, zugeordnet zu einer Vorabruf-Anfrage, verwendet werden, um eine Priorität einer Vorabruf-Anfrage zu bestimmen. Anfragen mit höherer Priorität können über in die Warteschlange gestellte (und nicht in Verarbeitung befindliche) ausstehende Anfragen mit niedrigerer Priorität ausgewählt werden. Bei Anfragen mit gleicher Priorität kann ein Antrag mit einer kürzeren Fertigstellungszeit ausgewählt werden.
  • Bei 2308 kann eine Ressourcenreservierung für Bandbreiten- und Speicherressourcen in irgendeiner Netzwerkvorrichtung in einem Antwortpfad (umfassend die Netzwerkschnittstelle der Rechenplattform des Empfängers) auftreten, um einen Vorabruf von Inhalt zu dem lokalen Cache, Speicher oder Speicherung (z.B. innerhalb der Rechenplattform und/oder des Speichers oder Cache der Netzwerkschnittstelle) zu erreichen. Die Ressourcenreservierung versucht, Bandbreiten- und Speicherressourcen zuzuweisen, um den Vorabruf innerhalb der durch die Vorabruf-Anfrage vorgegebenen Zeitgrenze abzuschließen.
  • Bei 2310 können eine oder mehrere Holen-Operationen für die ausgewählte Vorabruf-Anfrage für den in der ausgewählten Vorabruf-Anfrage angefragten Inhalt oder weniger Inhalt als der ausgewählte angefragte Vorabruf-Inhalt erzeugt und übertragen werden. Die Adressübersetzung kann durchgeführt werden, um eine physische Adresse zu bestimmen, die einer Speicherregion zugeordnet ist, auf die eine Vorabruf-Operation abzielt. In einigen Fällen kann ein lokaler Speicher inspiziert werden, um zu bestimmen, ob der Inhalt, auf den die geplante Vorababruf-Operation abzielt, in dem lokalen Speicher oder Cache gespeichert ist, wie beispielsweise in einer Rechenplattform oder in der Netzwerkschnittstelle der Rechenplattform. In einem solchen Fall werden für die ausgewählte Vorabruf-Anfrage Holen-Anfragen erzeugt und übertragen, die nicht lokal gespeichertem Inhalt (unter der Annahme von Inhaltskohärenz), sondern entfernt gespeichertem Inhalt entsprechen. Für die ausgewählte Vorabruf-Anfrage, die einem lokal gespeicherten Inhalt entspricht, können jedoch Holen-Anfragen erzeugt und übertragen werden.
  • Bei 2312 können eine oder mehrere Antworten auf Vorabruf-Anfragen empfangen werden. Die Antworten können Inhalt umfassen, der von einer entfernten Speichervorrichtung abgerufen wurde. Die eine oder die mehreren Antworten können Daten umfassen, die in einem Speicher oder Cache der Rechenplattform, die den Vorabruf initiiert hat, oder in einem Speicher oder Cache der Netzwerkschnittstelle der Rechenplattform gespeichert werden sollen. Die Netzwerkschnittstelle kann die Speicherung der empfangenen Antworten im zugeordneten Speicher oder Cache der Rechenplattform oder im Speicher oder Cache der Netzwerkschnittstelle der Rechenplattform verwalten.
  • Bei 2314 tritt das Kopieren des vorabgerufenen Inhalts in einen Cache vor der Verarbeitung des Inhalts auf. Der Cache kann L1- oder L2-Cache sein. Eine Anwendung oder ein Caching-Agent kann das Kopieren anfragen. Dementsprechend kann Inhalt in dem L1- oder L2-Cache zu einer vorgeschriebenen Zeit unter Verwendung von Vorabrufen und Ressourcenreservierung verfügbar sein.
  • 24 stellt einen beispielhaften Prozess dar. Der Prozess kann durch eine Netzwerkvorrichtung ausgeführt werden, die eine Anfrage für einen Vorabruf erhält und Inhalt als Teil eines Antwortpfades zu einem anderen Knoten speichern und/oder kopieren soll. Der Prozess kann zum Beispiel durch irgendeine Netzwerkvorrichtung zwischen einer anfragenden Rechenplattform und einem entfernten Speicher durchgeführt werden.
  • Bei 2450 wird eine Anfrage zur Zuweisung von Ressourcen an den Antwortpfad für die Vorabruf-Operation von Inhalt empfangen. Ressourcen können z.B. Ausgabebandbreite, intermediäre Warteschlangengrößen und Cache, Speicher oder Speicherungsplatz zum Speichern von Inhalt sein, die als eine Antwort auf eine Vorabruf-Anfrage bereitgestellt werden. Ein Pod-Manager, Orchestrator, Hypervisor, Virtual Machine Manager (VMM) oder eine andere Vorrichtung oder Software kann die Koordination der Allokation von Bandbreite und Speicherpufferplatz entlang des Antwortpfades von einem entfernten Speicher zu einem oder mehreren Empfängern bereitstellen. Ein Empfänger kann z.B. ein Cache oder eine Speichervorrichtung einer Quelle-Netzwerkschnittstelle sein, das von einer Rechenplattform verwendet wird, um einen Vorabruf aus einem entfernten Speicher anzufragen. Ein Empfänger kann zusätzlich oder alternativ eine Netzwerkvorrichtung sein, das über eine Struktur oder ein Netzwerk mit der Quelle-Netzwerkschnittstelle verbunden ist und Speicher oder Speicherungsfähigkeit für die Speicherung vorabgerufener Daten bereitstellt und das dem Anfragenden vorabgerufenen Inhalt schneller oder früher als der entfernte Speicher bereitstellen kann.
  • Bei 2452 kann die Zuweisung spezifizierter Ressourcen an der Netzwerkvorrichtung für die Vorabruf-Antwort erfolgen. Beispielsweise kann die Vorabruf-Antwort einer Vorabruf-Identifizierer und einer Prioritätsstufe zugeordnet werden. Die Zuweisung von Ressourcen kann die Zuweisung von Bandbreite oder Speicher-Speicherung oder Speicherbandbreiten-Ressourcen umfassen.
  • Bei 2454 wird eine Antwort empfangen und unter Verwendung der Ressourcenzuweisung gehandhabt. Die Antwort kann einen Abschnitt oder die Gesamtheit des Inhalts umfassen, der aus einem entfernten Speicher vorabgerufen werden soll. Die Anfrage kann gespeichert oder ohne Speicherung auf eine andere Netzwerkvorrichtung übertragen werden. Basierend auf den für die Antwort vorgenommenen Ressourcenzuweisungen und zugeordnet zu einem Vorabruf-Identifizierer können Bandbreiten- oder Speicherressourcen für die Antwort zugewiesen werden. Bei 2456 können in einigen Fällen Quality of Service-Anpassungen angewendet werden, die die zugewiesenen Ressourcen für den Vorabruf unterbrechen können. Zum Beispiel kann eine Upgrade- oder Downgrade-Priorität eines Vorabrufs auftreten oder die Transaktion kann durch eine überlastete Netzwerkvorrichtung abgelehnt werden. Dementsprechend erfüllen die Antworten in einigen Fällen möglicherweise nicht die Zeitanforderungen und können durch eine intermediäre Netzwerkvorrichtung oder einen Endpunktempfänger des Inhalts (z.B. die Netzwerkvorrichtung des Vorabruf-Anfragers) beendet werden.
  • Um annähernd eine Spitzen-Effizienz zu erreichen (d.h. hohe und stabile Anweisungen pro Zyklus (IPC; instructions per cycle)), können CPUs nicht aussetzen, während sie darauf warten, dass Daten verfügbar werden. Anders ausgedrückt sollen sich die benötigten Daten in Caches oder in lokalen und oberen Speicherlagen befinden, wenn eine CPU die Daten verarbeiten oder auf sie zugreifen soll. Die Effizienz von CPUs sinkt nicht nur durch das Stocken von Daten, sondern auch aufgrund des Wartens auf andere CPUs in einer kollaborativen Berechnung (z. B. Map-Reduce, aufeinanderfolgenden Datenverarbeitung usw.). Mit zunehmendem Datenvolumen nimmt jedoch die Trefferquote in den Caches und in der obersten Speicherlage ab, was davon abhängen kann, wie langwierig die Zugriffsverteilung wird. In einigen Fällen verschlechtert sich die mittlere Latenzzeit und die 90-Perzentil-Latenzzeit zum Erhalt der Daten mit zunehmender Fehlschlag-Rate potenziell in den oberen Teilen der Speicherhierarchie.
  • Die verfügbare Bandbreite zu den äußeren Lagen und zu den Daten in dem entfernten Speicher kann von L1/L2-Cache-Zugriffen bis zu Zugriffen über eine Struktur, die eine ansteigende Latenzzeit verursacht, ungefähr um eine Größenordnung von einigen Nanosekunden in L1/L2 bis zu einer Mikrosekunde oder mehr für einen Fernzugriff (z. B. durch direkten Speicherfernzugriff (RDMA; remote direct memory access)) sinken. Selbst innerhalb desselben Knotens können die Datenübertragungsraten stark variieren. Beispielsweise kann eine Speicherlage mit hoher Bandbreite (HBM) eine halbe Bandbreite von einem Terabyte pro Sekunde (oder mehr) erreichen, während eine dauerhafte Speicherlage derzeit eine maximale Bandbreite von nahezu hundert Gigabit/Sekunde (GB/s) erreichen kann.
  • Der Vorabruf von Daten kann die Latenzzeit reduzieren, unabhängig davon, wo die Daten ursprünglich in der lokalen Hierarchie oder in dem entfernten Speicher (z.B. in feldprogrammierbaren Gate Arrays (FPGAs; Field-Programmable Gate Array), verteiltem gemeinsamen Speicher (DSM; distributed shared memory) usw.) oder in gepooltem Speicher gespeichert sind. Das Vorabrufen von Daten aus dem Speicher zu dem Last-Level-Cache hat jedoch keine Entsprechung über die Struktur. Gewöhnlich verdrängen Daten, die vorabgerufen werden, andere Daten, wodurch ein Dilemma entsteht, bei dem eine Software bestimmen muss, ob sie nützliche Daten in Prozessor-Caches mit solchen vorabgerufenen Daten verdrängen soll. Ferner können unbenutzte, vorabgerufene Daten wertvollen Cache-Platz verschwenden und verschwendete Buszyklen erhöhen und auch den erneuten Abruf vorzeitig verdrängter Daten aus Caches, die ebenfalls Buszyklen verwenden, einführen.
  • Daten-Vorabrufe über Struktur verursachen Verbindungs-Transaktionen, die knappe Ressourcen binden, wie z.B. verschiedene interne Caches für die Abbildung von Deskriptoren, Trackern usw. zu Datenzugriffen und Warteschlangen/Tabellen, die den Status für verschiedene Anfrage-Antwort-Transaktionen halten.
  • In vielen Situationen lesen Anwendungen nicht nur gelegentlich 64 Bytes (z.B. 1 Cache-Speicherzeile) von entfernten Knoten ab. Beispielsweise kann eine Anwendung mehrere Megabyte an Daten zum Zweck einer Datenzusammenführung abtasten. In Szenarien, in denen entfernter Speicher durch Tunneln von UPI über eine Struktur oder eine Verbindung wie PCI-e, Ethernet, InfiniBand oder andere Protokolle freigelegt wird, greifen Anwendungen in aktuellen Architekturansätzen auf einen solchen entfernten Speicher jeweils eine Cache-Zeile nach der anderen in Folge zu, wie in 25 dargestellt. Selbst wenn Struktur-Protokolle das Lesen oder Schreiben unterschiedlicher Nutzlastgrößen unterstützen, arbeiten aktuelle UPI/IDI-Protokolle nur bei Zeilengranularität (z.B. 64 Bytes), was Auswirkungen in Bezug auf Latenzzeiten und Struktur-Nutzung haben kann. Um beispielsweise 1024 Bytes aus dem entfernten Speicher zu lesen, werden 16 Ablesungen an den entfernten Speicher ausgegeben, was für das Streaming von Daten im Megabyte-Bereich unpraktisch sein kann.
  • Ferner können die Rückseite-zu-Rückseite Cache-Leitung-Zugriffe, die in 25 gezeigt werden, optimistisch sein. Cache-Zeilenzugriffe können zeitlich verteilt sein, wenn die CPU einige Berechnungen mit den Daten durchführen muss, die von dem entfernten Speicherpool hereinkommen, und dabei ist sie gezwungen zu warten, bevor sie eine weitere Anfrage für eine weitere 64-Byte-Speicherzeile erzeugen kann. Daher kann die durchschnittliche Nutzlast bei der Verwendung der Latenzzeit viel größer sein als von 25 vorgeschlagen.
  • Um die Vorabruf-Schemata potenziell zu verbessern, koordinieren verschiedene Ausführungsbeispiele mit der Plattform und System-Quality of Services, um zu versuchen zu gewährleisten, dass genügend Plattform- und Systemressourcen (z. B. Struktur, NIC) zur Verfügung stehen, um die erforderliche Datenebene mit dem erforderlichen Service Level Agreement (SLA) für eine Datenverarbeitungsaktivität zu treiben. Eine Vorabruf-Logik kann automatisch Cache, Speicher und I/O-Quality of Service für irgendeinen Vorabruf von Daten aus dem entfernten Speicher zu dem lokalen Speicher und Cache in einer Rechenplattform oder NIC konfigurieren. Beispielsweise kann ein Hardware- oder Software-Vorabrufer 10 MB Daten aus dem entfernten Speicher kopieren, so dass 5 MB in DDR gespeichert werden, 4 MB in HBM gespeichert werden und 1 MB in LLC gespeichert werden und der Speicher und I/O-Quality of Service sind entsprechend konfiguriert, damit die Daten die Zielspeicherlagen erreichen und das anwendbare SLA erreichen.
  • Verschiedene Ausführungsbeispiele erlauben es Software, Parameter über Speicherabschnitte bereitzustellen, über die ein abgegrenzter Codeblock oder ein -Segment eine Operation ausführt (z.B. Lesen, Verarbeiten, Kopieren, Ablegen, Holen, Laden, Speichern usw.), und erwartete Zugriffe von Speicherregionen in der Nähe der Speicherabschnitte (z.B. Grob-Vorabruf), die während der Ausführung des abgegrenzten Codeblocks oder -Segments zu erwarten sind. Ferner kann die Software den Zeitpunkt der Datenverfügbarkeit und die Priorität der Verfügbarkeit irgendwelcher Daten für den Zugriff oder die Verarbeitung spezifizieren, ungeachtet dessen, ob die Daten aus einem entfernten Speicher vorabgerufen werden oder nicht. Proaktives Vorabrufen (in einigen Fällen umfassend Grob-Vorabrufen) von Daten kann über Speicherregionen erfolgen, die abgegrenztem Code und nahen Abschnitten zugeordnet sind.
  • Ein vorabgerufener Datenpfad von Netzwerkvorrichtungen kann verwaltet werden, um Daten aus einem entfernten Speicher zu kopieren, um näher an einer Speicherlage mit höherer Performance (z. B. L1- oder L2-Cache) zu sein, die näher dort liegt, wo eine Anwendung oder eine Vorrichtung auf die Daten zugreifen und sie verarbeiten soll. Der vorabgerufene Datenpfad von Netzwerkvorrichtungen kann die Rate des Datenkopierens anpassen, um Daten zeitnah bereitzustellen, indem Ressourcen wie Struktur-Bandbreite, für das Datenkopieren in dem vorabgerufenen Datenpfad von Netzwerkvorrichtungen zugewiesener Speicher, lokale Speicherlagen und Caches verwaltet werden. An jeder Netzwerkvorrichtung in dem Pfad können unterschiedliche Übertragungseinheiten mit unterschiedlicher Dauer angewendet werden, für die die proaktiv vorabgerufenen Datenkopien zu irgendeinem Zeitpunkt gespeichert (z.B. gecachet) bleiben dürfen, so dass die Gesamtlatenzzeit innerhalb der anwendbaren SLA-Anforderungen für die Daten liegt. Diese Zusammenarbeit zwischen den Netzwerkvorrichtungen in dem vorabgerufenen Datenpfad muss an keinem Teil des Datenpfads intrunsiv sein.
  • Verschiedene Ausführungsbeispiele stellen bereit, dass die Software, die die Datenverfügbarkeitsziele anzeigt, die Überwachung und Richtlinienanwendung in Netzwerkvorrichtungen in den Pfad der vorabgerufenen Daten abgeben kann, um zu leiten, wie die Daten zeitnah zur Verfügung gestellt werden. Die Anwendung kann auf die Daten zugreifen, sie verarbeiten und ein Ergebnis erzeugen, ohne die Datenmigration zu verwalten.
  • 26A stellt einen Überblick eines Systems auf hoher Ebene dar. Die Netzwerkschnittstelle 2620 kann einen Abruf-Zeitplaner 2624 und einen Ressourcenmanager 2622 verwenden, um die Zeitgebung und die Ressourcen zu verwalten, die zum Vorabruf von Inhalt aus einem entfernten Speicher oder Speicherung zu einem oder mehreren Blöcken aus einem gepoolten oder entfernten Speicher zu irgendeiner der lokalen Speicherlagen (z. B. Cache 2612, Speicher 2604 (z. B. DDR und/oder HBM), Speicher 2606 (z. B. DDR und/oder HBM oder dauerhafter Speicher 2608) oder Cache 2630, Vorabrufspeicher 2632 oder Speicher 2634 der Netzwerkschnittstelle 2620 verwendet werden.
  • Bei einigen Beispielen fragt Software (z.B. Anwendung oder OS) ausdrücklich eine Vorabruf-Operation an. Eine Softwareschnittstelle kann es Anwendungen ermöglichen, den Abruf-Zeitplaner der Netzwerkschnittstelle zu programmieren. Beispielsweise kann Software eine Anwendungsprogramm-Schnittstelle (API; application program interface) wie Proaktivervorabruf(Adresse, Priorität, Zeit zur Vervollständigung, Proaktiver_Vorabruf_Code_Identifizierer) verwenden. Das Feld Adresse kann einen Bereich von beginnenden und endenden virtuellen Speicheradressen identifizieren, aus denen Daten vorabgerufen werden. Das Feld Priorität kann eine Priorität einer proaktiven Vorabruf-Anfrage identifizieren. Das Feld Zeit_zur_Vervollständigung kann einen Zeitgeber (Countdown) oder eine Zeit anzeigen, zu der vorabgerufene Daten in einem L1- oder L2-Cache verfügbar sein sollen. Das Feld Proaktiver_Vorabruf_Code_Identifizierer kann ein Vorabruf-Anfrage-Identifizierer sein.
  • Bei einigen Beispielen wird eine Vorabruf-Operation nicht ausdrücklich von der Software angefragt, sondern von dem Abruf-Zeitplaner 2624 abgeleitet. Um Speicherregionen einer bestimmten Speicherhierarchie als Regionen zu identifizieren, die proaktiv vorabgerufen werden sollen, verwenden verschiedene Ausführungsbeispiele verschiedene Ansätze. Ein Anwendungsentwickler (oder Kompilierer oder Bibliothek) kann einen Wrapper oder eine Markierung einfügen, um irgendein Codesegment oder Anweisungen zu identifizieren, das/die Ablesen oder Schreiben zu einem oder mehreren bestimmten Blöcken von Cache-Zeilen durchführt. Eine Anwendung identifiziert Interesse in der Verarbeitung von Datenblöcken durch die Verwendung von Tags, die Cache-Zeilen identifizieren, die den Datenblöcken entsprechen. Speicherregionen, auf die wahrscheinlich von einem markierten Codesegment zugegriffen wird, können zumindest basierend auf dem Zeitpunkt der Speicherzuweisung oder der beim Kompilieren oder Ausführen eines markierten Codesegments spezifizierten Regionen bestimmt werden. Zusätzlich oder alternativ kann eine Überwachungsvorrichtung oder eine vom Prozessor ausgeführte Software in einer bestimmten Speicherlage-Speichersteuerung identifizieren, wie auf bestimmte Regionen der nächsten Speicherlage zugegriffen wird, und kann diese bestimmten Regionen als Kandidaten für proaktives Vorabrufen identifizieren.
  • Die Netzwerkschnittstelle 2620 führt Vorabrufe über die Cache-Zeilen in einer Region durch, die für proaktives Vorabrufen identifiziert wurde, so dass eine entfernte lokale Rückseite-zu-Rückseite-Latenzzeit so weit wie möglich verborgen bleibt. Durch das Vorabrufen wird die Schnittstelle zu dem Softwarestapel freigelegt, um die zeitliche Nutzung des Blocks festzulegen. Wenn der Vorabruf für einen Datenblock durchgeführt wird, werden nicht alle Daten in dem Cache oder in der nächsten Lage (z.B. DDR oder HBM) gespeichert. Stattdessen können die Daten in unterschiedlichen Lagen (unterteilt in Teilblöcke) gespeichert werden, da die Daten aus dem entfernten Speicher (z.B. Poolspeicher) in die nächste Speicherlage kommen.
  • Bei einigen Beispielen kann eine Anwendung oder eine Vorrichtung eine proaktive Vorabruf-Anfrage an eine Netzwerkschnittstelle 2620 ausgeben. Wenn der von der Netzwerkschnittstelle 2620 verwendete Vorabruf-Zeitplaner 2624 beschließt, einen oder mehrere Blöcke aus einem gepoolten oder entfernten Speicher zu irgendeiner der lokalen Speicherlagen vorabzurufen, fordert er den Ressourcenmanager 2622 auf, innerhalb einer vorgegebenen Zeitgrenze Ressourcen zuzuweisen, um das Kopieren von Daten aus einem entfernten Speicher durchzuführen. Die Ressourcen können beispielsweise einen oder mehrere aus Platz im Cache 2612, Platz im Speicher 2604 (z. B. DDR und/oder HBM), Platz im Speicher 2606 (z. B. DDR und/oder HBM) oder Platz im dauerhaften Speicher 2608) oder Platz im Cache 2630, Platz im Vorabruf-Speicher 2632 oder Platz im Speicher 2634, Lese- oder Schreibbandbreite des Speichers und Empfangsbandbreite der Netzwerkschnittstelle 2620 und Speicherplatz, Speicherbandbreite und Netzwerkbandbreite, die für das Kopieren von Daten entlang eines Datenpfads aus dem entfernten Speicher zu einer lokalen Speicherlage verfügbar sind, umfassen.
  • Der Ressourcenmanager 2622 kann Ressourcen von Netzwerkvorrichtungen entlang eines Kommunikationspfades zwischen der Netzwerkschnittstelle 2620 und zumindest einem entfernten Speicher oder Speicherung verfolgen. Ressourcen in mehreren Kommunikationspfaden zwischen der Netzwerkschnittstelle 2620 und zumindest einem entfernten Speicher oder Speicherung können identifiziert werden, so dass mehrere Pfade, die Netzwerkvorrichtungen verwenden, für eine Antwort verwendet werden können. Der Ressourcenmanager 2622 kann verfügbare Ressourcen an den Abruf-Zeitplaner 2624 bewerben.
  • Der Abruf-Zeitplaner 2624 bestimmt die zu verwendenden Ressourcen aus den verfügbaren Ressourcen und bestimmt, ob irgendwelche zeitlichen Anforderungen für einen Vorabruf oder proaktiven Vorabruf mit den verfügbaren Ressourcen erfüllt werden können. Der Abruf-Zeitplaner 2624 kann Regionen bestimmen, die proaktiv vorabgerufen werden, basierend auf dem Speicher, der dem zuvor beschriebenen markierten Code zugeordnet ist, oder auf Adressen im Speicher, die Cache-Zugriffen zugeordnet sind. Wenn die Zeitgebungs-Anforderungen für einen Vorabruf oder proaktiven Vorabruf erfüllt werden können, kann der Abruf-Zeitplaner Ressourcen zuweisen, um zumindest einen Teil des Vorabrufs oder proaktiven Vorabrufs zu erreichen. Beispielsweise kann der Abruf-Zeitplaner 2624 basierend auf einer vorabzurufenden oder proaktiv vorabzurufenden Datenmenge die erforderliche Durchsatzbandbreite der Netzwerkvorrichtung, die Geschwindigkeit der Speicherbandbreite (z. B. die Geschwindigkeit, mit der Daten gelesen oder geschrieben werden), den erforderlichen Platz im Speicher oder Cache in irgendeiner Netzwerkvorrichtung in einem Datenpfad und den Platz in irgendeiner lokalen Speicherlage bestimmen.
  • Der Abruf-Zeitplaner 2624 kann eine Auswahl von Speicherlagen zum Verwenden zum Speichern von vorabgerufenem oder proaktiv vorabgerufenem Inhalt wählen und den Datenmigrator 2626 verwenden, um das Kopieren / Bewegen von Inhalt zu einer Ziellage (umfassend L1- oder L2-Cache) bei der erforderlichen Zeit zu verwalten. Wenn z.B. vorabgerufener Inhalt in dem dauerhaften Speicher 2608 und vorabgerufener Inhalt aufgrund von Vakanz in dem Speicher 2606 gespeichert sind, kann der Datenmigrator 2626 das Initiieren des Kopierens von Inhalt zu dem L2-Cache basierend auf Latenzzeitprofilen des Speichers 2606 und des dauerhaften Speichers 2608 planen.
  • Bei einem Beispiel gibt der Abruf-Zeitplaner 2624 dem Ressourcenmanager 2622 an, welche Ressourcen für einen bestimmten Vorabruf oder proaktiven Vorabruf verwendet werden sollen. Beispielsweise kann der Abruf-Zeitplaner 2624 eines oder mehrere spezifizieren aus: eine Liste von Caches {C1,..., Cn}, Speicherlagen {M1, ..., Mm} und Struktur-Schnittstellen {F1,..., Ff}, eine Liste der Ressourcenzuweisung für jede dieser Ressourcen {Res1, ..., Resm+f+n}, eine ID, zugeordnet zu diesem Vorabrufschema (PASID+PrefID), und eine Zeitfrist für Inhalt, der zu einer lokalen Speicherlage kopiert werden soll. Zusätzlich oder alternativ kann der Abruf-Zeitplaner 2624 eines oder mehrere spezifizieren aus: eine Liste von Caches {C1,..., Cn}, Speicherlagen {M1, ..., Mm} und Struktur-Schnittstellen {F1,..., Ff}, eine Liste der Ressourcenzuweisung (Nutzungs-Schwellen) für jede dieser Ressourcen {Thres1, ..., Thresm+f+n}, eine diesem Vorabrufschema zugeordnete ID (PASID+PrefID) und eine Zeitfrist für Inhalt, der zu einer lokalen Speicherlage kopiert werden soll.
  • Der Ressourcenmanager 2622 soll die Menge der erforderlichen Ressource für bestimmte Ressourcen reservieren. Der Ressourcenmanager 2622 bildet die Ressourcenzuweisungen zu einer PASID oder einer Liste von PASIDS ab, wie es bei anderen QoS-Flüssen geschieht. Wenn es nicht genügend Ressourcen für eine bestimmte Ressourcenzuweisung gibt, gibt der Ressourcenmanager 2622 einen Fehler an den Vorabruf-Zeitplaner zurück, und der Vorabruf-Zeitplaner kann bestimmen, ob irgendwelche Ressourcen für einen Vorabruf oder proaktiven Vorabruf zugewiesen werden sollen. Wenn die Ressourcen zugewiesen werden können, gibt der Ressourcenmanager 2622 eine Akzeptier-Antwort an den Vorabruf-Zeitplaner zurück. Der Ressourcenmanager 2622 überwacht die Nutzung dieser Ressourcen durch eine gegebene VorabrufID und löst einen Rückruf an den Vorabruf-Zeitplaner aus, wenn die Nutzung irgendwelcher zugewiesenen Ressourcen verletzt (nicht erfüllt) wird. Der Ressourcenmanager 2622 kann mit einem Datenpfad-Ressourcenmanager kommunizieren, um die Bandbreiten- und Speicherplatznutzung in Netzwerkvorrichtungen zu lernen und auch um Bandbreite und Speicherplatz in verschiedenen Netzwerkvorrichtungen zuzuweisen. Der Abruf-Zeitplaner 2624 kann irgendwelche Anfragen an die Ressourcennutzung entfernen, wenn Antworten auf den Vorabruf empfangen werden oder der Vorabruf fehlgeschlagen ist, weil die Zeitvorgabe für die Datenverfügbarkeit verletzt wurde.
  • Der Abruf-Zeitplaner 2624 kann Cache-Fehlschlag-Informationen (z.B. Misses per Kilo-Instruction (MPKI)) verwenden, um eine Zeitgebung und Orte von Daten für den proaktiven Vorabruf aus dem entfernten Speicher zu näher am Ziel gelegenen Speicherlagen, wie z. B. einen intermediären Netzwerkvorrichtungs-Speicher oder Caches oder lokale Speicherlagen, abzuschätzen. Wenn die MPKI-Level zu steigen beginnen und eine Schwelle erreichen oder überschreiten, kann der Abruf-Zeitplaner 2624 das Vorabrufen oder proaktive Vorabrufen beschleunigen. Beispielsweise kann der Abruf-Zeitplaner 2624 die für die Datenübertragung zugewiesene Bandbreite erhöhen. Der Abruf-Zeitplaner 2624 kann den Datenmigrator 2626 verwenden, um zu verwalten, wann Daten aus einer Vorrichtung zu einer anderen Vorrichtung kopiert werden sollen. Wenn die MPKI-Level zu steigen beginnen, kann der Abruf-Zeitplaner 2624 verursachen, dass die Kopieroperationen früher beginnen. Beispielsweise kann der Datenmigrator 2626 das Kopieren von Daten aus einer entfernteren Lage des lokalen Speichers (z.B. dauerhafter Speicher) zu einer nähere Lage des Speichers (z.B. HBM, DDR oder LLC) verursachen. Der Datenmigrator 2626 kann auch das Kopieren von Inhalt aus irgendeinem lokalen Speicher (umfassend in der Netzwerkschnittstelle 2620) zu dem L1- oder L2-Cache verwalten.
  • Der Abruf-Zeitplaner 2624 kann den Datenmigrator 2626 verwenden, um Vorabrufe gemäß den anwendbaren SLAs und Zeitgebungs-Anforderungen zu orchestrieren. Der Datenmigrator 2626 kann einen Vorabruf von Blöcken oder Teilblöcken verwalten. Der Datenmigrator 2626 kann berechnen, wann die Daten aus der Quelle-Lage zu der Ziellage migriert werden sollten (basierend auf der Verbrauchsrate der Anwendung, die auf die Daten zugreift). Der Abruf-Zeitplaner 2624 kann den Ressourcenbestimmer 2628 verwenden, um die verwendeten Ressourcen (für jeden zu verschiebenden Block oder Teilblock) zu berechnen, die am Pfad von der Quelle-Lage zur ZielLage beteiligt sind. Der Ressourcenbestimmer 2628 kann die Menge an Ressourcen berechnen, die zur Durchführung einer solchen Datenbewegung benötigt wird (z.B. LLC-Wege, DDR-Speicherbandbreite usw.).
  • Wenn ein für eine bestimmte Ressource erforderliches SLA verletzt wird und ein Rückruf des Ressourcenmanagers 2622 oder einer anderen Quelle (z.B. Orchestrator oder Hypervisor) empfangen wird, kann der Ressourcenbestimmer 2628 die Ressourcen basierend auf den verfügbaren Ressourcen neu zuweisen. Nachdem ein Vorabruf zu einer lokalen Speicherlage oder zu dem L1- oder L2-Cache abgeschlossen ist, gibt der Ressourcenmanager 2622 das SLA und die zugewiesenen Ressourcen durch Kommunikation mit dem Ressourcenmanager 2622 frei.
  • Bei einigen Beispielen kann ein CPU-Cache die Verschmutzung vermeiden, indem er proaktiv vorabgerufene Daten in solchen Regionen für sehr kurze Zeiträume aufbewahrt, indem er proaktiv vorabgerufene Daten als am wenigsten kürzlich verwendet-1 (LRU-1) und bereit für eine schnelle Herabstufung zu einem speicherbasierten Staging-/Opfer-Puffer behandelt. Zusätzlich können Struktur-Steuerungen proaktive Vorabruf-Zugriffe über eine bestimmte Block-Größe aggregieren.
  • 26B zeigt ein Beispiel von Vorrichtungen, die mit Reserve-Ressourcen für Vorabrufe und proaktive Vorabrufe kommunizieren. Der Datenpfad-Ressourcenmanager 2650 kann irgendeiner aus einem Pod-Verwalter, Orchestrator, Hypervisor, Virtual Machine Manager (VMM) oder einem anderen Vorrichtungsmanager sein. Auf ähnliche Weise wie im Hinblick auf 19B beschrieben, kann der Datenpfad-Ressourcenmanager 2650 die Ressourcenverfügbarkeit und die Ressourcennutzung einer Netzwerkvorrichtung in einem Datenübertragungspfad von einer Endpunktvorrichtung 2656 zu der Netzwerkvorrichtung 2652 des Anfragenden identifizieren. Die Endpunktvorrichtung 2656 kann irgendwelche aus Beschleunigern, Speicherung oder einem Speicherpool bereitstellen. Bei diesem Beispiel kann ein Anfragender die Endpunktvorrichtung 2656 verwenden, um Inhalt aus der Endpunktvorrichtung 2656 über die Netzwerkvorrichtung 2654 zu einer Speicherlage in einem Anfragenden (z. B. LLC, DDR-kompatibler Speicher, HBM, dauerhafter Speicher) vorabzurufen.
  • Bei einigen Beispielen verfolgt die Netzwerkvorrichtung 2654 ihre eigenen verfügbaren Ressourcen und die Ressourcenzuweisung für jede AbrufID. Die Netzwerkvorrichtung 2654 kann irgendwelche Abweichungen von einer Ressourcenzuweisung für eine AbrufID an den Datenpfad-Ressourcenmanager 2650 melden. Beispielsweise kann die Netzwerkvorrichtung 2654 die Ressourcenzuweisung basierend auf einer Vielzahl von Faktoren modifizieren, umfassend Vorrichtungsausfall, eine Anfrage mit höherer Priorität, die die zugewiesenen Ressourcen benötigt und gewährt bekommt, und so weiter.
  • 27 zeigt ein Beispiel eines Vorabrufens von Inhalt in den Blöcken A und B aus gepooltem entfernten Speicher zu einer Plattform. Bei diesem Beispiel kann der gepoolte Speicher ein dauerhafter Speicher sein (gezeigt als Intel Optane® oder byteadressierbarer dauerhafter Speicher), wie beispielsweise ein byteadressierbarer nicht-flüchtiger Speicher oder irgendeine Art von Speicher. Bei 0) greift eine Anwendung auf Bereiche in den Blöcken A und B in dem gepoolten Speicher zu. Bei 1) werden MPKI für Cache-Zeilen-Fehlschläge für die Blöcke A und B bei jeweils 7 und 4 MPKI detektiert. Der Vorabruf-Zeitplaner identifiziert, dass das MPKI-Level für die Blöcke A und B einen MPKI-Schwellenpegel überschreitet. Pro Block kann eine MPKI-Schwelle festgelegt werden (z.B. eine MPKI-Schwelle für Block A und eine unterschiedliche Schwelle für Block B oder eine Schwelle für die Blöcke A und B. Bei 2), migriert der Vorabruf-Zeitplaner Block A zu LLC und Block B zu DDR. Bei 3) fragt eine Anwendung einen Treffer für Block A in Lage 0 (LLC) an, und der Vorabruf-Zeitplaner verursacht eine Kopie eines Teils von Block A aus dem LLC in den L2-Cache.
  • Ein Caching- und Home-Agent (CHA), der in einigen Intel-Multi-Core-CPU-Chips verfügbar ist, kann verwendet werden, um die Cache-Kohärenz zwischen den Kernen aufrechtzuerhalten und Anfragen für Cache-Zugriffe zu überwachen. Ein CHA oder eine andere Vorrichtung, die anstelle einer CHA oder zusätzlich zu einer CHA verwendet wird, kann ausgebildet sein, um eine oder mehrere auszuführen aus: Befehls-Warteschlangenbildung, Metadaten-Caching, eine Anzeigetafel zur Verfolgung des Datenabrufs und des Ausführungsfortschritts einer Anfrage, eine Hashing-Operation, eine Komparator-Operation, eine Maskierungsoperation und eine Ergebniswarteschlange.
  • 28 zeigt ein Beispiel einer proaktiven Vorabruf-Operation. Ein Wrapper oder Marker kann Code identifizieren, der Ablesen oder Schreiben zu einem oder mehreren bestimmten Blöcken von Cache-Zeilen (und zugeordneten Adressen im Speicher) durchführt. Bei diesem Beispiel verfügt ein System über 3 Speicherlagen (z.B. Lage 0 (z. B. LLC), Lage 1 (z.B. DDR- oder HBMkompatibler Speicher) und dauerhafter Speicher). Bei Aktion 0 identifiziert eine Anwendung Interesse an der Verarbeitung von Datenblöcken in Bereichen von Speicheradressen der Blöcke A und B durch die Verwendung von Tags, die Cache-Zeilen identifizieren, die entsprechend den Bereichen der Speicheradressen A und B verwendet werden sollen. Diese Anzeigen gehen von der CPU an einen proaktiven Vorabrufer, der eine Konfiguration für den Bereich der Chunk-Größe hat, bei der Zugriffe überwacht werden sollen. Ein proaktiver Vorabrufer kann von einer Netzwerkschnittstelle verwendet werden, um Cache-Zeilen-Fehlschläge zu überwachen und einen proaktiven Vorabruf aus Speicherregionen zu Speicherlagen zu veranlassen, die näher am L1- oder L2-Cache liegen (z.B. Lage 0 und/oder Lage 1). Beispielsweise kann ein proaktiver Vorabrufer Komponenten eines Abruf-Zeitplaners und Ressourcenmanagers umfassen oder verwenden und umgekehrt.
  • Eine Anwendung konfiguriert den proaktiven Vorabrufer, dass er ein MPKI-Level von Cache-Zugriffen überwacht, die den Speicherbereichen in irgendeinem der Blöcke A und B entsprechen. Der proaktive Vorabrufer ist konfiguriert, um einen MPKI-Schwellenpegel zu detektieren, die 6 MPKI überschreitet, und infolgedessen ein proaktives Vorabrufen zu veranlassen. Andere MPKI-Schwellenpegel können verwendet werden. Ein MPKI-Level von 7 für Block A verursacht Aktion 2, bei der der proaktive Vorabrufer beginnt, Block A proaktiv zu Lage 0 in einen transparenten Puffer (als Seiten-Cache) vorabzurufen. Ein Inkrement des abgerufenen Inhalts kann 256 Byte, 512 Byte oder andere Größen sein. Der transparente Puffer kann im Lage 0-Speicher (z.B. LLC) zugeordnet werden und wird von einem proaktiven Vorabrufer aufrechterhalten. Anschließend, wenn die Anfragen der Anwendung Zeilen in Block A treffen (z.B. Versätze 0,2 und 3), verursacht der proaktive Vorabrufer bei Aktion 3 das Kopieren von Zeilen in Block A (z.B. Versätze 0, 2 und 3) aus Lage 0 aus dem Seiten-Cache zu dem L2-Cache. Zeilen an den Versätzen 0, 2 und 3 in Block A können verfügbar sein, um überschrieben oder aus Lage 0 verdrängt zu werden.
  • Der proaktive Vorabrufer überwacht auch die tatsächlichen Zugriffe in den Regionen A oder B und passt die Datenmenge, die in den Seiten-Cache eingebracht werden soll, dementsprechend an, z.B. wie viele Megabyte oder irgendeine andere Volumenmetrik. Wenn beispielsweise der Zugriff zu Block A hoch ist, kann ein proaktiver Vorabrufer mit dem Vorabrufen von 10 MB Inhalt beginnen, oder wenn der Zugriff zu Block A niedrig ist, kann ein proaktiver Vorabrufer nur 1 MB vorabrufen. Es wird darauf hingewiesen, dass die Kapazitätsverwaltung des Seiten-Caches einfach gehalten werden kann. Zum Beispiel kann ein Kuckuck-Hash einer kleinen Kettenlänge für jeden Bereich ausreichen.
  • 29 stellt einen Prozess dar. Der Prozess kann von einer Netzwerkschnittstelle durchgeführt werden, um Ressourcen für einen Vorabruf oder proaktiven Vorabruf von Inhalt aus einem entfernten Speicher oder Speicherung zu einem Speicher oder Cache einer Plattform oder Netzwerkschnittstelle zuzuweisen. Bei 2902 wird eine Konfiguration von einer Anwendung, Software oder einer Vorrichtung empfangen. Die Konfiguration kann eines oder mehrere umfassen aus: einen Bereich von beginnenden und endenden virtuellen Speicheradressen, von denen Daten vorabgerufen werden sollen; eine Priorität einer proaktiven Vorabruf-Anfrage; einen Zeitgeber (Countdown) oder eine Zeit, zu der vorabgerufene Daten in einem L1- oder L2-Cache verfügbar sein sollen; oder einen Identifizierer für eine Vorabruf-Anfrage. Bei einigen Beispielen identifiziert eine Anwendung Interesse in der Verarbeitung von Datenblöcken durch die Verwendung von Tags, die Cache-Zeilen identifizieren, die den Datenblöcken entsprechen. Speicherregionen, auf die wahrscheinlich von einem markierten Codesegment zugegriffen wird, können zumindest basierend auf dem Zeitpunkt der Speicherzuweisung oder der beim Kompilieren oder Ausführen eines markierten Codesegments spezifizierten Regionen bestimmt werden.
  • Bei 2904 werden Ressourcen für den proaktiven Vorabruf der Region zugewiesen. Eine Region kann kleiner, gleich groß oder größer sein als eine durch die Anwendung identifizierte Region. Eine Bestimmung wird von einer Menge an Ressourcen durchgeführt, die zur Durchführung einer solchen Datenbewegung benötigt wird (z.B. LLC-Wege, Speicherbandbreite, Netzwerkvorrichtungs-Bandbreite usw.). In einigen Fällen kann die Zuweisung von Ressourcen für soviel des Vorabrufs erfolgen, wie für die Zeitanforderungen erfüllt werden kann, so dass weniger als eine gesamte Menge an Inhalt vorabgerufen werden soll. Wenn z.B. nicht genügend Ressourcen zur Verfügung stehen, um die Zeitanforderungen zu erfüllen, wird eine Menge an Ressourcen zugewiesen, die dem Kopieren von weniger als einem gesamten Inhalt, zugeordnet zu der Vorabruf-Anfrage, entspricht. Wenn jedoch der gesamte Inhalt für den Vorabruf kopiert werden kann und die Zeitanforderungen basierend auf den verfügbaren Ressourcen erfüllt, wird die für den Vorabruf des Inhalts bestimmte Menge an Ressourcen zugewiesen.
  • Bei 2906 wird mit der Performance des Vorabrufs begonnen. Inhalt wird kopiert und in Speicherlagen bewegt, die näher am L1- oder L2-Cache oder am L1- oder L2-Cache liegen innerhalb einer vorgeschriebenen Zeitgrenze. Intermediäre Netzwerkvorrichtungen können zugewiesene Ressourcen verwenden, um den Inhalt entlang des Pfades zum Ziel zu kopieren oder zu speichern.
  • Bei 2908 wird bestimmt, ob für den Vorabruf eine Neuzuweisung der Ressourcen auftreten soll. Steigt beispielsweise ein MPKI-Level für irgendeinen proaktiven Vorabruf-Block an, kann die Menge der Inhalts-Vorabrufe erhöht oder beschleunigt und Ressourcen für die Handhabung der erhöhten oder beschleunigten Vorabrufe zugeordnet werden. Wenn zum Beispiel die für eine bestimmte Ressource erforderliche SLA verletzt wird und daher ein Rückruf empfangen wird, kann eine Neuzuweisung der Ressourcen versucht werden. Wenn eine Neuzuweisung von Ressourcen stattfinden soll, folgt 2910. Wenn keine Neuzuweisung von Ressourcen erfolgen soll, folgt 2912.
  • Bei 2910 wird eine Neuzuweisung der Ressourcen durchgeführt. Die Neuzuweisung von Ressourcen kann in ähnlicher Weise wie bei 2904 durchgeführt werden, so dass versucht wird, Ressourcen für einen gesamten Inhaltsregion-Vorabruf zuzuweisen, aber Ressourcen können für weniger als die gesamte Inhaltsregion zugewiesen werden, die verfügbaren Ressourcen und Zeittransferanforderungen unterliegt.
  • Bei 2912 wird bestimmt, ob ein Vorabruf abgeschlossen ist. Wenn der Vorabruf abgeschlossen ist, folgt 2914, wo die Ressourcen wieder de-allokiert und für andere Zwecke freigegeben werden können. Wenn der Vorabruf nicht vollständig ist, kehrt der Prozess zu 2908 zurück.
  • Dementsprechend können Daten in Lagen verfügbar sein, die näher am L1- oder L2-Cache oder am L1- oder L2-Cache liegen, bevor sie für die Verarbeitung benötigt werden. Ein proaktiver Vorabruf einer größeren Region, die angefragt hat, und die Beschleunigung von Anfragen kann bei der Datenverfügbarkeit näher am L1- oder L2-Cache helfen. Dies kann den Leerlauf der CPU reduzieren.
  • 30 stellt ein System dar. Das System kann die hierin beschriebenen Ausführungsbeispiele verwenden, um zumindest die Batterieleistung für die Sicherung von Inhalten im flüchtigen Speicher zuzuweisen. Ein System 3000 umfasst einen Prozessor 3010, der die Verarbeitung, die Betriebsverwaltung und die Ausführung von Anweisungen für das System 3000 bereitstellt. Der Prozessor 3010 kann irgendeine Art von Mikroprozessor, zentraler Verarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU; graphics processing unit), Verarbeitungskern oder andere Verarbeitungshardware umfassen, um die Verarbeitung für das System 3000 oder eine Kombination von Prozessoren bereitzustellen. Der Prozessor 3010 steuert den Gesamtbetrieb des Systems 3000 und kann ein oder mehrere programmierbare Allzweck- oder Spezialzweck-Mikroprozessoren, digitale Signalprozessoren (DSPs; digital signal processors), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltungen (ASICs; application specific integrated circuits), programmierbare Logikbauelemente (PLDs; programmable logic devices) oder dergleichen oder eine Kombination solcher Bauelemente sein oder umfassen.
  • Bei einem Beispiel umfasst ein System 3000 eine Schnittstelle 3012, die mit einem Prozessor 3010 gekoppelt ist, was eine Hochgeschwindigkeitsschnittstelle oder eine Schnittstelle mit hohem Durchsatz für Systemkomponenten repräsentieren kann, die Verbindungen mit höherer Bandbreite benötigt, wie beispielsweise ein Speicherteilsystem 3020 oder Grafikschnittstellen-Komponenten 3040 oder Beschleuniger 3042. Die Schnittstelle 3012 repräsentiert eine Schnittstellenschaltung, die eine eigenständige Komponente oder auf einem Prozessor-Die integriert sein kann. Falls vorhanden, ist eine Grafikschnittstelle 3040 über eine Schnittstelle mit Grafikkomponenten verbunden, um einem Nutzer des Systems 3000 eine visuelle Anzeige bereitzustellen. Bei einem Beispiel kann die Grafikschnittstelle 3040 eine hochauflösende (HD; high definition) Anzeige, die einem Nutzer eine Ausgabe bereitstellt, treiben. Hochauflösend kann sich auf eine Anzeige beziehen, die eine Pixeldichte 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, 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 3040 eine Anzeige basierend auf Daten, die in dem Speicher 3030 gespeichert sind oder basierend auf Operationen, die der Prozessor 3010 ausführt oder beidem. Bei einem Beispiel erzeugt die Grafikschnittstelle 3040 eine Anzeige basierend auf Daten, die in dem Speicher 3030 gespeichert sind oder basierend auf Operationen, die der Prozessor 3010 ausführt oder beidem.
  • Die Beschleuniger 3042 können eine Offload-Engine mit fester Funktion sein, auf die der Prozessor 3010 zugreifen kann oder die von einem Prozessor 1010 verwendet werden kann. Beispielsweise kann ein Beschleuniger unter den Beschleunigern 3042 Kompressionsfähigkeit (DC), Kryptographiedienste wie beispielsweise Public-Key-Verschlüsselung (PKE; public key encryption), Chiffrieren, Hash-/Authentifizierung-Fähigkeiten, Entschlüsselung oder andere Fähigkeiten oder Dienste bereitstellen. Bei einigen Ausführungsbeispielen stellt ein Beschleuniger unter den Beschleunigern 3042 zusätzlich oder alternativ die hierin beschriebenen Feldauswahlsteuerungsfähigkeiten bereit. In einigen Fällen können die Beschleuniger 3042 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 3042 einen Einzel- oder Multi-Kern-Prozessor umfassen, eine Grafikverarbeitungseinheit, eine logische Ausführungseinheit mit Ein- oder Multi-Ebenen-Cache, funktionale Einheiten verwendbar zur unabhängigen Ausführung von Programmen oder Threads, anwendungsspezifische integrierte Schaltungen (ASICs), Neuronale-Netzwerk-Prozessoren (NNPs; neural network processors), programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie feldprogrammierbare Gate-Arrays (FPGAs; field programmable gate arrays). Die Beschleuniger 3042 können mehrere neuronale Netzwerke, CPUs, Prozessorkerne, Allzweck-Grafikverarbeitungseinheiten 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: ein Verstärkungs-Lernschema, ein Q-Lernschema, ein Deep-Q-Lernen oder ein Asynchronous Advantage Actor-Critic (A3C), ein kombinatorisches neuronales Netzwerk, ein rekurrierendes kombinatorisches neuronales Netzwerk oder ein anderes KI- oder ML-Modell. Mehrere neuronale Netzwerke, Prozessorkerne oder Grafikverarbeitungseinheiten können für die Verwendung durch AI- oder ML-Modelle zur Verfügung gestellt werden.
  • Ein Speicherteilsystem 3020 repräsentiert den Hauptspeicher des Systems 3000 und stellt Speicher für einen Code, der von dem Prozessor 3010 ausgeführt werden soll, oder für Datenwerte, die bei der Ausführung einer Routine verwendet werden sollen, bereit. Das Speicherteilsystem 3020 kann eine oder mehrere Speichervorrichtungen 3030 umfassen, wie beispielsweise Nurlesespeicher (ROM; read-only memory), Flash-Speicher, eine oder mehrere Varianten eines Direktzugriffsspeichers (RAM; random access memory) wie beispielsweise DRAM, oder andere Speichervorrichtungen, oder eine Kombination solcher Vorrichtungen. Ein Speicher 3030 speichert und hostet unter anderem ein Betriebssystem (OS; operating system) 3032, um eine Softwareplattform für die Ausführung von Anweisungen in dem System 3000 bereitzustellen. Zusätzlich können Anwendungen 3034 auf der Software-Plattform von OS 3032 von dem Speicher 3030 ausgeführt werden. Die Anwendungen 3034 und OS 3032 können innerhalb einer virtuellen Maschinenumgebung oder einer Containerumgebung mit individuellen zugewiesenen Speicherregionen ausgeführt werden. Die Anwendungen 3034 repräsentieren Programme, die ihre eigene operative Logik zur Ausführung einer oder mehrerer Funktionen umfassen. Prozesse 3036 repräsentieren Mittel oder Routinen, die Hilfsfunktionen an OS 3032 oder eine oder mehrere Anwendungen 3034 oder eine Kombination bereitstellen. Das OS 3032, die Anwendungen 3034 und die Prozesse 3036 stellen Software-Logik bereit, um Funktionen für das System 3000 bereitzustellen. Bei einem Beispiel umfasst das Speicherteilsystem 3020 eine Speichersteuerung 3022, die eine Speichersteuerung zum Erzeugen und Erteilen von Befehlen an den Speicher 3030 ist. Es versteht sich, dass die Speichersteuerung 3022 ein physikalischer Teil des Prozessors 3010 oder ein physikalischer Teil der Schnittstelle 3012 sein könnte. Zum Beispiel kann die Speichersteuerung 3022 eine integrierte Speichersteuerung sein, die auf einer Schaltung mit dem Prozessor 3010 integriert ist.
  • Auch wenn nicht speziell dargestellt, versteht es sich, dass das System 3000 einen oder mehrere Busse oder Bussysteme zwischen Bauelementen umfassen kann, wie beispielsweise einen Speicherbus, einen Grafikbus, Schnittstellenbusse oder andere. Busse oder andere Signalleitungen können Komponenten kommunikativ oder elektrisch miteinander koppeln, oder die Komponenten sowohl kommunikativ als auch elektrisch koppeln. Busse können physikalische 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-Bus (PCI; peripheral component interconnect), einem Hyper Transport- 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 (Firewire) umfassen.
  • Bei einem Beispiel umfasst das System 3000 eine Schnittstelle 3014, die mit der Schnittstelle 3012 gekoppelt sein kann. Bei einem Beispiel repräsentiert die Schnittstelle 3014 eine Schnittstellenschaltung, die eigenständige Komponenten und eine integrierte Schaltungsanordnung umfassen kann. Bei einem Beispiel koppeln mehrere Nutzerschnittstellenkomponenten oder Peripheriekomponenten oder beide mit der Schnittstelle 3014. Eine Netzwerkschnittstelle 3050 stellt dem System 3000 die Möglichkeit bereit, über eines oder mehrere Netzwerke mit entfernten Bauelementen (z.B. Servern oder anderen Rechenvorrichtungen) zu kommunizieren. Die Netzwerkschnittstelle 3050 kann einen Ethernet-Adapter, drahtlose Verbindungskomponenten, zelluläre Netzwerk-Verbindungskomponenten, USB (Universal Serial Bus) oder andere drahtgebundene oder drahtlose standard-basierte oder proprietäre Schnittstellen umfassen. Die Netzwerkschnittstelle 3050 kann Daten an eine Vorrichtung übertragen, die sich im gleichen Datenzentrum oder Rack befindet, oder an eine entfernte Vorrichtung, was das Senden von im Speicher gespeicherten Daten umfassen kann. Die Netzwerkschnittstelle 3050 kann Daten von einer entfernten Vorrichtung empfangen, was die Speicherung der empfangenen Daten im Speicher umfassen kann. Verschiedene Ausführungsbeispiele können in Verbindung mit der Netzwerkschnittstelle 3050, dem Prozessor 3010 und dem Speicherteilsystem 3020 verwendet werden.
  • Bei einem Beispiel umfasst das System 3000 eine oder mehrere Eingangs-/Ausgangs- (I/O; Input/Output) Schnittstelle(n) 3060. Eine I/O-Schnittstelle 3060 kann eine oder mehrere Schnittstellenkomponenten umfassen, durch die ein Nutzer mit dem System 3000 interagiert (z.B. Audio-, alphanumerische, tastbare/berührbare oder andere Schnittstellen). Eine Peripherieschnittstelle 3070 kann irgendeine Hardwareschnittstelle umfassen, die oben nicht ausdrücklich erwähnt wurde. Peripherievorrichtungen beziehen sich im Allgemeinen auf Vorrichtungen, die abhängig von dem System 3000 verbunden werden. Eine abhängige Verbindung ist eine Verbindung, bei der das System 3000 die Software- 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 3000 ein Speicherungsteilsystem 3080, um Daten in einer nichtflüchtigen Weise zu speichern. Bei einem Beispiel können in bestimmten Systemimplementierungen zumindest bestimmte Komponenten einer Speicherung 3080 mit Komponenten des Speicherteilsystems 3020 überlappen. Das Speicherungsteilsystem 3080 umfasst (eine) Speicherungsvorrichtung(en) 3084, die irgendein herkömmliches Medium zum Speichern großer Datenmengen auf nichtflüchtige Weise sein oder umfassen kann (können), wie beispielsweise eine oder mehrere magnetische, Festkörper- oder optische Platten oder eine Kombination davon. Eine Speicherung 3084 umfasst einen Code oder Anweisungen und Daten 3086 in einem dauerhaften Zustand (d.h. der Wert bleibt trotz Unterbrechung der Leistung zu dem System 3000 erhalten). Die Speicherung 3084 kann allgemein als ein „Speicher“ betrachtet werden, obwohl der Speicher 3030 üblicherweise der Ausführungs- oder Betriebsspeicher ist, um dem Prozessor 3010 Anweisungen bereitzustellen. Während die Speicherung 3084 nichtflüchtig ist, kann der Speicher 3030 einen flüchtigen Speicher umfassen (d.h. der Wert oder Zustand der Daten ist unbestimmt, wenn die Leistung zu dem System 3000 unterbrochen ist). Bei einem Beispiel umfasst das Speicherungsteilsystem 3080 eine Steuerung 3082, um über eine Schnittstelle mit der Speicherung 3084 verbunden zu sein. Bei einem Beispiel ist die Steuerung 3082 ein physikalischer Teil der Schnittstelle 3014 oder des Prozessors 3010 oder kann Schaltungsanordnungen oder Logik sowohl in dem Prozessor 3010 als auch in der Schnittstelle 3014 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. Dynamischer flüchtiger Speicher erfordert ein Aktualisieren der Daten, die in der Vorrichtung gespeichert sind, um den Zustand aufrechtzuerhalten. Ein Beispiel eines dynamischen flüchtigen Speichers umfasst DRAM (Dynamic Random Access Memory; dynamischen Direktzugriffsspeicher) oder eine Variante wie beispielsweise synchronen DRAM (SDRAM; Synchronous DRAM). 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; (Speicher mit hoher Bandbreite) JESD325, ursprünglich veröffentlicht durch JEDEC im Oktober 2013, LPDDR5 (wird derzeit durch JEDEC besprochen), HBM2 (HBM-Version 2), wird derzeit durch JEDEC besprochen, 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 (zum Beispiel 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); phase change memory with a switch), NVM-Vorrichtungen, die Chalkogenidphasenwechselmaterial (zum Beispiel Chalkogenidglas) verwenden, einen resistiven Speicher umfassend Metalloxid-Basis, Sauerstoff-Leerstellenbasis und Conductive Bridge Random Access Memory (CB-RAM), Nanodrahtspeicher, ferroelektrischer Direktzugriffsspeicher (FeRAM, FRAM; ferroelectric random access memory), magnetoresistiver Direktzugriffsspeicher (MRAM; magneto resistive random access memory) 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) basierte Vorrichtung, eine DW (Domain Wall; Domänenwand) und SOT (Spin Orbit Transfer) basierte Vorrichtung, eine thyristorbasierte Speichervorrichtung oder eine Kombination aus irgendeinem der obigen oder einen anderen Speicher.
  • Eine Leistungsquelle (nicht abgebildet) stellt den Komponenten des Systems 3000 Leistung bereit. Genauer gesagt bildet eine Leistungsquelle üblicherweise eine Schnittstelle mit einer oder mehreren Leistungsversorgungen in dem System 3000, um den Komponenten des Systems 3000 Leistung bereitzustellen. Bei einem Beispiel umfasst die Leistungsversorgung einen Wechselstrom-zu-Gleichstrom-(Wechselstrom-zu-Gleichstrom) Adapter zum Einstecken in eine Steckdose. Eine solche Wechselstrom-Leistung kann eine erneuerbare Energie- (z.B. Sonnenenergie) Leistungsquelle sein. Bei einem Beispiel umfasst eine Leistungsquelle eine Gleichstrom-Leistungsquelle, wie beispielsweise einen externen Wechselstrom-zu-Gleichstrom-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 Solarstromversorgung oder eine Brennstoffzellenquelle umfassen.
  • Bei einem Beispiel kann das System 3000 unter Verwendung von miteinander verbundenen Rechenschlitten aus Prozessoren, Speichern, Speicherungen, Netzwerkschnittstellen und anderen Komponenten implementiert sein. Es können Hochgeschwindigkeitsverbindungen wie PCIe, Ethernet oder optische Verbindungen (oder eine Kombination davon) verwendet werden.
  • Ausführungsbeispiele hierin können in verschiedenen Typen von Rechen- und Netzwerk-Ausrüstung, wie beispielsweise Schaltern, Routern, Racks und Blade-Servern, wie sie in einem Datenzentrum und/oder einer Serverfarmumgebung verwendet werden, implementiert sein. Die Server, die in Datenzentren und Serverfarmen verwendet werden, umfassen angeordnete Server-Konfigurationen wie beispielsweise Rack-basierte Server oder Blade-Server. Diese Server sind in Kommunikation über verschiedene Netzzugänge miteinander verbunden, wie z.B. ein Partitionieren von Servergruppen in lokale Netzwerke (LANs; Local Area Networks) mit geeigneten Schalt- und Routing-Einrichtungen zwischen den LANs, um ein privates Intranet zu bilden. Zum Beispiel können Cloud-Hosting-Einrichtungen üblicherweise große Datenzentren mit einer Vielzahl von Servern nutzen. Ein Blade umfasst eine separate Rechenplattform, die ausgebildet ist, um 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; mainboard), die eine interne Verkabelung (d.h. Busse) zum Koppeln geeigneter integrierter Schaltungen (ICs) und anderer Komponenten, die auf der Platine befestigt sind, bereitstellt.
  • Verschiedene Beispiele können unter Verwendung von Hardware-Elementen, Software-Elementen 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 Hardware-Elementen und/oder Software-Elementen implementiert wird, kann gemäß irgendeiner Anzahl von Faktoren, wie beispielsweise der gewünschten Rechenrate, den Leistungspegeln, den Wärmetoleranzen, dem Budget des Verarbeitungszyklus, den Eingangsdatenraten, den Ausgangsdatenraten, den Speicherressourcen, den Datenbusgeschwindigkeiten und anderen Entwurf- oder Performanceeinschränkungen, wie für eine gegebene Implementierung gewünscht, variieren. Es wird darauf hingewiesen, dass Hardware-, Firmware- und/oder Software-Elemente hierin zusammen oder individuell als „Modul“, „Logik“, „Schaltung“ oder „Schaltungsanordnung“ bezeichnet werden können. Ein Prozessor kann eines oder mehrere sein aus einer Kombination aus einer Hardware-Zustandsmaschine, digitaler Steuerlogik, zentralen Verarbeitungseinheit oder irgendwelchen Hardware-, Firmware- und/oder Software-Elementen.
  • 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 zur Speicherung 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 Software-Elemente, 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 dergleichen. 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 Hoch- und 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(m) Rechenvorrichtung oder 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 Beispiel“ oder „ein Beispiel“ beziehen sich nicht alle notwendigerweise auf dasselbe Beispiel oder Ausführungsbeispiel. Irgendein hierin beschriebener Aspekt kann mit irgendeinem anderen 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ührungsformen umfasst sein müssten.
  • Einige Beispiele können mit den Ausdrücken „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 physischen oder elektrischen 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“, „zweite“ und dergleichen bezeichnen hierin nicht irgendeine Ordnung, Menge oder Bedeutung, sondern werden eher dazu verwendet, ein Element von einem anderen zu unterscheiden. Die Begriffe „ein“ und „eine“ bezeichnen hierin nicht eine Quantitätseinschränkung, sondern eher das Vorhandensein von zumindest einem von den Gegenständen, auf die Bezug genommen wird. Der Begriff „durchgesetzt“, der hierin in Bezug auf ein Signal verwendet wird, bezeichnet einen Zustand des Signals, in dem das Signal aktiv ist und der durch Anlegen irgendeines Logikpegels an 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 durchgeführt werden, gemäß alternativen Ausführungsbeispielen. Ferner können zusätzliche Schritte, je nach bestimmten Anwendungen, hinzugefügt oder entfernt werden. Es kann irgendeine Kombination von Änderungen verwendet werden und ein Fachmann auf dem Gebiet, der den Vorteil 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 eine 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 zumindest eines von X, zumindest eines von Y oder zumindest eines von Z erfordern, um jeweils vorzuliegen. Darüber hinaus sollte konjunktive Sprache wie beispielsweise die Phrase „zumindest eines von X, Y und Z“, sofern nicht anderweitig spezifisch angegeben, auch als X, Y, Z oder eine Kombination davon, umfassend „X, Y und/oder Z“, verstanden werden.
  • Darstellende Beispiele von den Vorrichtungen, Systemen und Verfahren, die hierin offenbart sind, sind nachfolgend bereitgestellt. Ein Ausführungsbeispiel der Vorrichtungen, Systeme und Verfahren kann irgendeine einzelne oder mehrere und irgendeine Kombination der nachfolgend beschriebenen Beispiele umfassen.
  • Beispiel 1 umfasst eine Netzwerkschnittstelle, umfassend: einen Speicher; eine Schnittstelle zu einem Kommunikationsmedium; und einen Vorabrufer, kommunikativ gekoppelt mit der Schnittstelle und zum Empfangen eines Befehls, ein Vorabrufen von Inhalt aus einem entfernten Speicher durchzuführen, mit zugeordneten Informationen, wobei die zugeordneten Informationen eine Zeitgrenze umfassen und der Vorabrufer ausgebildet ist, um zu bestimmen, ob eine Ressourcenzuordnung verfügbar ist, um zumindest einen Abschnitt des Vorabrufens innerhalb der Zeitgrenze basierend auf dem Befehl und zugeordneten Informationen zu vervollständigen.
  • Beispiel 2 umfasst irgendein Beispiel, wobei die zugeordneten Informationen eines oder mehrere umfassen aus: 1) eine virtuelle Basis-Adresse, die aus einem entfernten Speicher abgerufen werden soll, (2) eine Menge an Inhalt, die aus einem entfernten Speicher abgerufen werden soll, (3) der entfernte Speicher, der eine Region speichert, die abgerufen werden soll (4) eine Priorität eines Vorabrufens, (5), eine Anzeige, ob Ressourcen in einem Ende-zu-Ende-Pfad für eine Antwort reserviert werden sollen, oder (6) eine Gültigkeits-Zeitlänge des Vorabrufens und eine Zeiteinheit.
  • Beispiel 3 umfasst irgendein Beispiel, wobei der Vorabrufer ausgebildet ist, um ein Kopieren von Inhalt aus dem entfernten Speicher zu einer oder mehreren Speicher-Lagen, umfassend Level-1-Cache, Level-2-Cache, Last-Level-Cache, lokalen Speicher, dauerhaften Speicher, oder Speicher der Netzwerkschnittstelle zu veranlassen.
  • Beispiel 4 umfasst irgendein Beispiel, wobei der Vorabrufer ausgebildet ist, um Ressourcen in irgendeiner Netzwerkvorrichtung in einem Vor-Abruf-Daten-Pfad zwischen der Netzwerkschnittstelle und dem entfernten Speicher zu reservieren.
  • Beispiel 5 umfasst irgendein Beispiel, wobei die Ressourcen eines oder mehrere umfassen aus: Speicherbandbreite, Austrittbandbreite oder Speicherplatz können irgendeiner Netzwerkvorrichtung für die Verwendung mit einem Vorabruf zugeordnet werden.
  • Beispiel 6 umfasst irgendein Beispiel, wobei der Vorabrufer ausgebildet ist, um eine Menge an Ressourcen zur Zuordnung zu bestimmen, um ein Kopieren von Inhalt auszuführen und zu bestimmen, wann Inhalt aus dem entfernten Speicher zu einer Zielspeicher-Lage kopiert werden soll, basierend auf den zugeordneten Ressourcen.
  • Beispiel 7 umfasst irgendein Beispiel, wobei der Vorabrufer ausgebildet ist, um eine andere Zuordnung von Ressourcen zu bestimmen, basierend darauf, dass die Ressourcen-Zuordnung die bestimmte Ressourcen-Zuordnung nicht erfüllt.
  • Beispiel 8 kann irgendein Beispiel umfassen, und umfassend einen Cache und einen Nur-Lese-Cache zum Speichern von vor-abgerufenen Daten aus dem entfernten Speicher.
  • Beispiel 9 umfasst irgendein Beispiel, wobei der Vorabrufer ausgebildet ist zum: Anfragen zum Vorabrufen einer Region innerhalb der Zeitgrenze; Bestimmen einer Speicherregion in dem entfernten Speicher zum proaktiven Vorabrufen von Daten, die dem Vorabrufen zugeordnet sind; und Zuweisen von Bandreite und Speicherplatz in einem Datenpfad, um Daten in der bestimmten Speicherregion innerhalb der Zeitgrenze zu migrieren.
  • Beispiel 10 umfasst irgendein Beispiel, wobei der Vorabrufer ausgebildet ist, um zu verursachen, dass Inhalt an einen Cache innerhalb der Zeitgrenze kopiert wird.
  • Beispiel 11 umfasst irgendein Beispiel, wobei der Vorabrufer ausgebildet ist zum: Bestimmen einer Rate von Cache-Fehlschlägen, zugeordnet zu einer Speicherregion, derart identifiziert, dass ein Vorabrufen derselben aus dem entfernten Speicher erfolgt und basierend darauf, dass die Rate von Cache-Fehlschlägen zunimmt und einen Schwellenpegel überschreitet, Erhöhen einer Datenkopierrate aus dem entfernten Speicher zu einer lokalen Speicherlage.
  • Beispiel 12 umfasst irgendein Beispiel und umfassend einen Ressourcenmanager zum Verwalten der Ressourcenzuordnung in irgendeiner Netzwerkvorrichtung in einem Datenpfad aus dem entfernten Speicher zu einer lokalen Speicherlage basierend auf zugeordneten Ressourcen.
  • Beispiel 13 umfasst irgendein Beispiel, wobei der Vorabrufer ausgebildet ist, um Inhalt an den entfernten Speicher aus einer lokalen Speicherlage vorzuschieben.
  • Beispiel 14 umfasst irgendein Beispiel, und umfassend eines oder mehrere aus: einem Server, Datenzentrum, Rack oder Rechenplattform.
  • Beispiel 15 umfasst irgendein Beispiel und umfassend den entfernten Speicher.
  • Beispiel 16 umfasst ein computerimplementiertes Verfahren, umfassend: Empfangen einer Anfrage, Inhalt aus einem entfernten Speicher vorabzurufen; Zuordnen, zu einem proaktiven Vorabrufen, einer größeren Region des entfernten Speichers als eine Region, die der Anfrage zugeordnet ist; Zuordnen von Ressourcen in einem Datenpfad aus dem entfernten Speicher zu einer oder mehreren lokalen Lagen des Speichers für proaktives Vorabrufen der größeren Region; Veranlassen eines Starts des Vorabrufens der größeren Region; und basierend darauf, dass eine Cache-Fehlschlag-Ebene für Cache-Zugriffe, zugeordnet zu der größeren Region, eine Schwelle erfüllt oder überschreitet, Verursachen einer erhöhten Vorabruf-Rate aus der größeren Region zu der einen oder den mehreren lokalen Lagen des Speichers.
  • Beispiel 17 umfasst irgendein Beispiel, wobei das Zuordnen einer größeren Region des entfernten Speichers mit einem proaktiven Vorabrufen auf einem Marker eines ausgeführten Codes basiert, der eine größere Speicherregion identifiziert.
  • Beispiel 18 umfasst irgendein Beispiel, die Ressourcen umfassend eines oder mehrere aus: Speicherbandbreite, Austrittbandbreite oder Speicherplatz können irgendeiner Netzwerkvorrichtung in einem Datenpfad von vorabgerufenem Inhalt zugeordnet werden.
  • Beispiel 19 umfasst irgendein Beispiel, wobei die Anfrage zugeordnete Informationen umfasst, umfassend eines oder mehrere aus: (1) eine virtuelle Basis-Adresse, die aus einem entfernten Speicher abgerufen werden soll, (2) eine Menge an Inhalt, die aus einem entfernten Speicher abgerufen werden soll, (3) der entfernte Speicher, der die Region speichert, die abgerufen werden soll (4) eine Priorität eines Vorabrufens, (5), eine Anzeige, ob Ressourcen in einem Ende-zu-Ende-Pfad für eine Antwort reserviert werden sollen, oder (6) eine Zeit zum Vervollständigen des Inhaltstransfers.
  • Beispiel 20 kann irgendein Beispiel umfassen, wobei das Zuordnen von Ressourcen in einem Datenpfad aus dem entfernten Speicher zu einer oder mehreren lokalen Lagen eines Speichers für proaktives Vorabrufen der Region ein Zuordnen von Ressourcen in einem Datenpfad aus dem entfernten Speicher zu einer oder mehreren lokalen Lagen eines Speichers für proaktives Vorabrufen umfasst, basierend auf einer Zeit, um den Inhaltstransfer zu vervollständigen
  • Beispiel 21 umfasst irgendein Beispiel, wobei die eine oder die mehreren lokalen Lagen von Speicher Level-1-Cache, Level-2-Cache, Last-Level-Cache, lokalen Speicher, dauerhaften Speicher, oder den Speicher einer Netzwerkschnittstelle umfassen.
  • Beispiel 22 umfasst irgendein Beispiel, und umfassend: Empfangen einer Anfrage, Inhalt zu einem entfernten Speicher zu schieben; Zuordnen von Ressourcen in einem Datenpfad zu dem entfernten Speicher; und Verursachen eines Starts, Inhalt zu dem entfernten Speicher zu schieben.

Claims (12)

  1. Beschleuniger-Hardware-Schaltungsanordnung, die konfigurierbar ist zur Verwendung bei der Durchführung von Operationen bezogen auf künstliche Intelligenz in Zuordnung zu mindestens einer Beschleuniger-zu-Beschleuniger-Kommunikationsverbindung, mehreren Netzwerkschnittstellensteuerungen, mehreren zentralen Verarbeitungseinheiten und mindestens einer Prozessor-zu-Prozessor-Kommunikationsverbindung, wobei sich die mehreren Netzwerkschnittstellensteuerungen und die mehreren zentralen Verarbeitungseinheiten in mehreren Schaltungsplatinen befinden, die über mindestens einen Schalter kommunikativ miteinander gekoppelt sind, die Beschleuniger-Hardware-Schaltungsanordnung umfassend: mindestens eine Grafikverarbeitungseinheit (GPU), der reservierte Speicherplatzressourcen und reservierte Speicherbandbreitenressourcen zur Verwendung bei der Ausführung mindestens einer Arbeitslast zugewiesen werden, wobei die reservierten Speicherbandbreitenressourcen zumindest teilweise basierend auf einer auf Quality of Service basierenden Planung zugewiesen werden sollen; wobei: die reservierten Speicherplatzressourcen so konfigurierbar sind, dass sie L2-Cache-Speicher umfassen; die Beschleuniger-Hardware-Schaltungsanordnung mit einer anderen Beschleuniger-Hardware-Schaltungsanordnung über die mindestens eine Beschleuniger-zu-Beschleuniger-Kommunikationsverbindung kommunizieren soll; mindestens eine der mehreren zentralen Verarbeitungseinheiten mit mindestens einer anderen der mehreren zentralen Verarbeitungseinheiten über die mindestens eine Prozessor-zu-Prozessor-Kommunikationsverbindung kommunizieren soll; und die mindestens eine Arbeitslast so konfigurierbar ist, dass sie Container-basiert oder Virtuelle-Maschine-basiert ist.
  2. Die Beschleuniger-Hardware-Schaltungsanordnung gemäß Anspruch 1, wobei: die auf Quality of Service basierende Planung Durchsatz- und Latenzanforderungen zugeordnet ist; die auf künstliche Intelligenz bezogenen Operationen zumindest teilweise mindestens einem Cloud-basierten Dienst zugeordnet sind; und/oder die mehreren Schaltungsplatinen die mindestens eine GPU umfassen.
  3. Die Beschleuniger-Hardware-Schaltungsanordnung gemäß Anspruch 2, wobei: die Anforderungen einer Kunden-Service-Level-Vereinbarung zugeordnet sind; und/oder die mindestens eine GPU mindestens eine physische GPU umfasst.
  4. Mindestens ein nichtflüchtiges, maschinenlesbares Speichermedium, das Anweisungen speichert, die zumindest teilweise durch eine Beschleuniger-Hardware-Schaltungsanordnung ausgeführt werden sollen, wobei die Beschleuniger-Hardware-Schaltungsanordnung konfigurierbar ist zur Verwendung bei der Durchführung von Operationen bezogen auf künstliche Intelligenz in Zuordnung zu mindestens einer Beschleuniger-zu-Beschleuniger-Kommunikationsverbindung, mehreren Netzwerkschnittstellensteuerungen, mehreren zentralen Verarbeitungseinheiten und mindestens einer Prozessor-zu-Prozessor-Kommunikationsverbindung, wobei sich die mehreren Netzwerkschnittstellensteuerungen und die mehreren zentralen Verarbeitungseinheiten in mehreren Schaltungsplatinen befinden, die über mindestens einen Schalter kommunikativ miteinander gekoppelt sind, die Beschleuniger-Hardware-Schaltungsanordnung umfassend zumindest eine Grafikverarbeitungseinheit (GPU), wobei die Anweisungen, wenn sie durch die Beschleuniger-Hardware-Schaltungsanordnung ausgeführt werden, zu der Durchführung von Operationen führen, umfassend: Konfigurieren der mindestens einen GPU zur Zuweisung von reservierten Speicherplatzressourcen und reservierten Speicherbandbreitenressourcen zur Verwendung bei der Ausführung mindestens einer Arbeitslast, wobei die reservierten Speicherbandbreitenressourcen zumindest teilweise basierend auf einer auf Quality of Service basierenden Planung zugewiesen werden sollen; wobei: die reservierten Speicherplatzressourcen so konfigurierbar sind, dass sie L2-Cache-Speicher umfassen; die Beschleuniger-Hardware-Schaltungsanordnung mit einer anderen Beschleuniger-Hardware-Schaltungsanordnung über die mindestens eine Beschleuniger-zu-Beschleuniger-Kommunikationsverbindung kommunizieren soll; mindestens eine der mehreren zentralen Verarbeitungseinheiten mit mindestens einer anderen der mehreren zentralen Verarbeitungseinheiten über die mindestens eine Prozessor-zu-Prozessor-Kommunikationsverbindung kommunizieren soll; und die mindestens eine Arbeitslast so konfigurierbar ist, dass sie Container-basiert oder Virtuelle-Maschine-basiert ist.
  5. Das mindestens eine nichtflüchtige maschinenlesbare Speichermedium gemäß Anspruch 4, wobei: die auf Quality of Service basierende Planung Durchsatz- und Latenzanforderungen zugeordnet ist; die auf künstliche Intelligenz bezogenen Operationen zumindest teilweise mindestens einem Cloud-basierten Dienst zugeordnet sind; und/oder die mehreren Schaltungsplatinen die mindestens eine GPU umfassen.
  6. Das mindestens eine nichtflüchtige maschinenlesbare Speichermedium gemäß Anspruch 5, wobei: die Anforderungen einer Kunden-Service-Level-Vereinbarung zugeordnet sind; und/oder die mindestens eine GPU mindestens eine physische GPU umfasst.
  7. Eine physische Rechenplattform zur Verwendung bei der Durchführung von Operationen bezogen auf künstliche Intelligenz, die physische Rechenplattform umfassend: eine Beschleuniger-Hardware-Schaltungsanordnung; mindestens eine Beschleuniger-zu-Beschleuniger-Kommunikationsverbindung; mehrere Netzwerkschnittstellensteuerungen; mehrere zentrale Verarbeitungseinheiten; mindestens eine Prozessor-zu- Prozessor-Kommunikationsverbindung; mindestens einen Schalter; wobei: die mehreren Netzwerkschnittstellensteuerungen und die mehreren zentralen Verarbeitungseinheiten in mehreren Schaltungsplatinen umfasst sind, die über den mindestens einen Schalter kommunikativ miteinander gekoppelt sind; die Beschleuniger-Hardware-Schaltungsanordnung mindestens eine Grafikverarbeitungseinheit (GPU) umfasst, der reservierte Speicherplatzressourcen und reservierte Speicherbandbreitenressourcen zur Verwendung bei der Ausführung mindestens einer Arbeitslast zugewiesen werden; wobei die reservierten Speicherbandbreitenressourcen zumindest teilweise basierend auf einer auf Quality of Service basierenden Planung zugewiesen werden sollen; die reservierten Speicherplatzressourcen so konfigurierbar sind, dass sie L2-Cache-Speicher umfassen; die Beschleuniger-Hardware-Schaltungsanordnung mit einer anderen Beschleuniger-Hardware-Schaltungsanordnung über die mindestens eine Beschleuniger-zu-Beschleuniger-Kommunikationsverbindung kommunizieren soll; mindestens eine der mehreren zentralen Verarbeitungseinheiten mit mindestens einer anderen der mehreren zentralen Verarbeitungseinheiten über die mindestens eine Prozessor-zu-Prozessor-Kommunikationsverbindung kommunizieren soll; und die mindestens eine Arbeitslast so konfigurierbar ist, dass sie Container-basiert oder Virtuelle-Maschine-basiert ist.
  8. Die physische Rechenplattform gemäß Anspruch 7, wobei: die auf Quality of Service basierende Planung Durchsatz- und Latenzanforderungen zugeordnet ist; die auf künstliche Intelligenz bezogenen Operationen zumindest teilweise mindestens einem Cloud-basierten Dienst zugeordnet sind; und/oder die mehreren Schaltungsplatinen die mindestens eine GPU umfassen.
  9. Die physische Rechenplattform gemäß Anspruch 8, wobei: die Anforderungen einer Kunden-Service-Level-Vereinbarung zugeordnet sind; und/oder die mindestens eine GPU mindestens eine physische GPU umfasst.
  10. Mindestens ein nichtflüchtiges, maschinenlesbares Speichermedium, das Anweisungen speichert, die zumindest teilweise durch eine Rechenplattform ausgeführt werden sollen, wobei die Rechenplattform einer Beschleuniger-Hardware-Schaltungsanordnung zugeordnet ist, wobei die Rechenplattform zur Verwendung bei der Durchführung von Operationen bezogen auf künstliche Intelligenz ist, die Rechenplattform umfassend mindestens eine Beschleuniger-zu-Beschleuniger-Kommunikationsverbindung, mehrere Netzwerkschnittstellensteuerungen, mehrere zentrale Verarbeitungseinheiten und mindestens eine Prozessor-zu-Prozessor-Kommunikationsverbindung, wobei die mehreren Netzwerkschnittstellensteuerungen und die mehreren zentralen Verarbeitungseinheiten in mehreren Schaltungsplatinen umfasst sind, die über mindestens einen Schalter kommunikativ miteinander gekoppelt sind, die Beschleuniger-Hardware-Schaltungsanordnung umfassend zumindest eine Grafikverarbeitungseinheit (GPU), wobei die Anweisungen, wenn sie zumindest teilweise durch die Rechenplattform ausgeführt werden, zu der Durchführung von Operationen führen, umfassend: Ausbilden der mindestens einen GPU zur Zuweisung von reservierten Speicherplatzressourcen und reservierten Speicherbandbreitenressourcen zur Verwendung bei der Ausführung mindestens einer Arbeitslast, wobei die reservierten Speicherbandbreitenressourcen zumindest teilweise basierend auf einer auf Quality of Service basierenden Planung zugewiesen werden sollen; wobei: die reservierten Speicherplatzressourcen so konfigurierbar sind, dass sie L2-Cache-Speicher umfassen; die Beschleuniger-Hardware-Schaltungsanordnung mit einer anderen Beschleuniger-Hardware-Schaltungsanordnung über die mindestens eine Beschleuniger-zu-Beschleuniger-Kommunikationsverbindung kommunizieren soll; mindestens eine der mehreren zentralen Verarbeitungseinheiten mit mindestens einer anderen der mehreren zentralen Verarbeitungseinheiten über die mindestens eine Prozessor-zu-Prozessor-Kommunikationsverbindung kommunizieren soll; und die mindestens eine Arbeitslast so konfigurierbar ist, dass sie Container-basiert oder Virtuelle-Maschine-basiert ist.
  11. Das mindestens eine nichtflüchtige maschinenlesbare Speichermedium gemäß Anspruch 10, wobei: die auf Quality of Service basierende Planung Durchsatz und Latenz zugeordnet ist; die auf künstliche Intelligenz bezogenen Operationen zumindest teilweise mindestens einem Cloud-basierten Dienst zugeordnet sind; und/oder die mehreren Schaltungsplatinen die mindestens eine GPU umfassen.
  12. Das mindestens eine nichtflüchtige maschinenlesbare Speichermedium gemäß Anspruch 11, wobei: die Anforderungen einer Kunden-Service-Level-Vereinbarung zugeordnet sind; und/oder die mindestens eine GPU mindestens eine physische GPU umfasst.
DE102020007986.5A 2019-09-11 2020-07-10 Proaktiver daten-vorabruf mit angewandter quality-of-service Pending DE102020007986A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/568,048 2019-09-11
US16/568,048 US11573900B2 (en) 2019-09-11 2019-09-11 Proactive data prefetch with applied quality of service

Publications (1)

Publication Number Publication Date
DE102020007986A1 true DE102020007986A1 (de) 2021-03-11

Family

ID=69054674

Family Applications (2)

Application Number Title Priority Date Filing Date
DE102020118307.0A Pending DE102020118307A1 (de) 2019-09-11 2020-07-10 Proaktiver daten-vorabruf mit angewandter quality-of-service
DE102020007986.5A Pending DE102020007986A1 (de) 2019-09-11 2020-07-10 Proaktiver daten-vorabruf mit angewandter quality-of-service

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE102020118307.0A Pending DE102020118307A1 (de) 2019-09-11 2020-07-10 Proaktiver daten-vorabruf mit angewandter quality-of-service

Country Status (2)

Country Link
US (2) US11573900B2 (de)
DE (2) DE102020118307A1 (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10034407B2 (en) * 2016-07-22 2018-07-24 Intel Corporation Storage sled for a data center
KR20200019431A (ko) * 2018-08-14 2020-02-24 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
US11115497B2 (en) * 2020-03-25 2021-09-07 Intel Corporation Technologies for providing advanced resource management in a disaggregated environment
US11176043B2 (en) 2020-04-02 2021-11-16 International Business Machines Corporation Distributed memory-augmented neural network architecture
US20210373951A1 (en) * 2020-05-28 2021-12-02 Samsung Electronics Co., Ltd. Systems and methods for composable coherent devices
US11294808B2 (en) 2020-05-21 2022-04-05 Micron Technology, Inc. Adaptive cache
TR202009944A1 (tr) * 2020-06-25 2022-01-21 Loodos Bilisim Teknolojileri Sanayi Ve Ticaret Ltd Sirketi Önbellek güncelleme sistemi ve yöntemi.
US11422934B2 (en) 2020-07-14 2022-08-23 Micron Technology, Inc. Adaptive address tracking
US11409657B2 (en) 2020-07-14 2022-08-09 Micron Technology, Inc. Adaptive address tracking
US11811867B2 (en) * 2020-09-01 2023-11-07 International Business Machines Corporation Data transmission routing based on replication path capability
US20220066935A1 (en) * 2020-09-03 2022-03-03 Microsoft Technology Licensing, Llc Memory cache for disaggregated memory
KR20220070951A (ko) 2020-11-23 2022-05-31 삼성전자주식회사 메모리 장치, 이를 포함하는 시스템 및 메모리 장치의 동작 방법
US20220004330A1 (en) * 2020-12-26 2022-01-06 Intel Corporation Memory pool data placement technologies
KR20220097586A (ko) * 2020-12-30 2022-07-08 삼성전자주식회사 메모리 모듈, 메인 보드, 및 서버 장치
US20220263770A1 (en) * 2021-02-18 2022-08-18 Intel Corporation Application-to-application resource reservation schemes for precision networking
US11693779B2 (en) 2021-04-30 2023-07-04 International Business Machines Corporation Prefetch of random data using application tags
CN118103824A (zh) * 2021-06-09 2024-05-28 安法布里卡公司 通过网络协议的透明远程存储器访问
KR20230040057A (ko) 2021-09-15 2023-03-22 에스케이하이닉스 주식회사 시스템의 읽기 성능을 개선하기 위한 장치 및 방법
US20220012094A1 (en) * 2021-09-22 2022-01-13 Intel Corporation Resource management controller
US11989142B2 (en) 2021-12-10 2024-05-21 Samsung Electronics Co., Ltd. Efficient and concurrent model execution
WO2023227945A1 (en) * 2022-05-25 2023-11-30 Neuroblade Ltd. Processing systems and methods

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2943677B2 (ja) * 1995-12-06 1999-08-30 日本電気株式会社 非同期転送モード通信方式における回線迂回制御システム
US5987506A (en) * 1996-11-22 1999-11-16 Mangosoft Corporation Remote access and geographically distributed computers in a globally addressable storage environment
US7593321B2 (en) * 1997-02-11 2009-09-22 Cisco Technology, Inc. Method and system for a local and fast non-disruptive path switching in high speed packet switching networks
JP2002044138A (ja) * 2000-07-25 2002-02-08 Nec Corp ネットワークシステム,キャッシュサーバ,中継サーバ,ルータ,キャッシュサーバ制御方法及び記録媒体
US6738870B2 (en) * 2000-12-22 2004-05-18 International Business Machines Corporation High speed remote storage controller
US7222270B2 (en) * 2003-01-10 2007-05-22 International Business Machines Corporation Method for tagging uncorrectable errors for symmetric multiprocessors
US7487296B1 (en) * 2004-02-19 2009-02-03 Sun Microsystems, Inc. Multi-stride prefetcher with a recurring prefetch table
US7685255B2 (en) * 2006-04-24 2010-03-23 Blue Coat Systems, Inc. System and method for prefetching uncacheable embedded objects
US7565494B1 (en) * 2006-09-12 2009-07-21 Emc Corporation Configuring a bounded cache prefetch policy in a computer system employing object addressable storage
JP4806466B2 (ja) * 2007-08-22 2011-11-02 日本電信電話株式会社 パス管理制御方法、パス管理制御プログラム、パス管理制御装置およびパス管理制御システム
JP5062058B2 (ja) * 2008-06-26 2012-10-31 富士通株式会社 ノード装置及び経路設定方法
US8218553B2 (en) * 2009-02-25 2012-07-10 Juniper Networks, Inc. Load balancing network traffic on a label switched path using resource reservation protocol with traffic engineering
US8549231B2 (en) * 2010-01-08 2013-10-01 Oracle America, Inc. Performing high granularity prefetch from remote memory into a cache on a device without change in address
US9117252B2 (en) * 2010-05-07 2015-08-25 Nec Corporation Information processing device, terminal, server, and method for data transfer
US8711818B2 (en) * 2010-07-30 2014-04-29 Mayflower Communications Company Inc. High performance data transport system and method
KR101621776B1 (ko) 2012-02-02 2016-05-17 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 멀티코어 프로세서에서의 서비스 품질 타깃
US9535842B2 (en) * 2014-08-28 2017-01-03 Oracle International Corporation System and method for performing message driven prefetching at the network interface
US9930133B2 (en) 2014-10-23 2018-03-27 Netapp, Inc. System and method for managing application performance
EP3274829A4 (de) * 2015-03-26 2018-11-21 Intel Corporation Stufenübergreifendes vorabrufen für mehrstufige geteilte bibliotheken
US11601523B2 (en) * 2016-12-16 2023-03-07 Intel Corporation Prefetcher in multi-tiered memory systems
US10417733B2 (en) 2017-05-24 2019-09-17 Samsung Electronics Co., Ltd. System and method for machine learning with NVMe-of ethernet SSD chassis with embedded GPU in SSD form factor
US11269395B2 (en) 2019-04-25 2022-03-08 Intel Corporation Technologies for providing adaptive power management in an accelerator sled

Also Published As

Publication number Publication date
US20210141731A1 (en) 2021-05-13
US20200004685A1 (en) 2020-01-02
US11573900B2 (en) 2023-02-07
DE102020118307A1 (de) 2021-03-11

Similar Documents

Publication Publication Date Title
DE102020007986A1 (de) Proaktiver daten-vorabruf mit angewandter quality-of-service
US20210149812A1 (en) Network interface controller with eviction cache
DE102020125046A1 (de) Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle
US20180024932A1 (en) Techniques for memory access prefetching using workload data
DE112018004798T5 (de) Technologien für ein bereitstellen von effizientem speicherzugriff auf einem beschleunigerschlitten
DE112020006967T5 (de) Performanceüberwachung für kurzlebige funktionen
DE102022107621A1 (de) Resourcenauswahl, die zum teil auf der arbeitslast basiert
US20190034383A1 (en) Technologies for providing remote access to a shared memory pool
DE102020130971A1 (de) Schlanke arbeitsspeicherzuweisung unter verwendung von arbeitsspeicherpools
US20210019069A1 (en) Memory and storage pool interfaces
DE102020133262A1 (de) Arbeitslastscheduler für Speicherzuweisung
DE102020118494A1 (de) Technologien zur behandlung einer latenzbasierten dienstebenenvereinbarung in fern-direktspeicherzugriffsnetzen
US20210117244A1 (en) Resource manager access control
DE102020133273A1 (de) Leistungsüberwachung und Ressorcenverwaltung
US20210334138A1 (en) Technologies for pre-configuring accelerators by predicting bit-streams
DE102022124530A1 (de) Speicherpoolmanagement
DE102020130965A1 (de) Technologien für rasches booten mit fehlerkorrekturcode-arbeitsspeicher
US11989135B2 (en) Programmable address range engine for larger region sizes
DE102022124481A1 (de) Dynamische zuweisung von cache-ressourcen
DE102020114020A1 (de) Technologien zum bereitstellen von effizientem nachrichten-polling
DE102018212476A1 (de) Technologien zum bereitstellen von effizientem pooling für eine hyperkonvergente infrastruktur
DE102018005850A1 (de) Technologien für automatisiertes Netzüberlastungsmanagement

Legal Events

Date Code Title Description
R129 Divisional application from

Ref document number: 102020118307

Country of ref document: DE

R012 Request for examination validly filed